Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails-何时使用params.permit!如何替换它_Ruby On Rails_Ruby_Security_Actioncontroller_Brakeman - Fatal编程技术网

Ruby on rails RubyonRails-何时使用params.permit!如何替换它

Ruby on rails RubyonRails-何时使用params.permit!如何替换它,ruby-on-rails,ruby,security,actioncontroller,brakeman,Ruby On Rails,Ruby,Security,Actioncontroller,Brakeman,我正在开发一个遗留的rails应用程序,控制器有许多params.permit的实例。在其上运行制动器扫描时,params.permit打开应用程序以防止出现大规模分配漏洞 我的问题是-什么是绕过这个params.permit最有效的方法!漏洞并将其替换?params.permit白名单导致批量分配漏洞的所有属性。解决这个问题的最佳方法是只将必要的属性列入白名单,如 params.permit(:attr1,:attr2..) 更好的是,与 允许您选择哪些属性应被列入质量的白名单 更新,从而防

我正在开发一个遗留的rails应用程序,控制器有许多
params.permit的实例。在其上运行制动器扫描时,
params.permit打开应用程序以防止出现大规模分配漏洞


我的问题是-什么是绕过这个params.permit最有效的方法!漏洞并将其替换?

params.permit白名单导致批量分配漏洞的所有属性。解决这个问题的最佳方法是只将必要的属性列入白名单,如

params.permit(:attr1,:attr2..)
更好的是,与

允许您选择哪些属性应被列入质量的白名单 更新,从而防止意外暴露那些不应该 暴露在外。为此提供两种方法:要求和许可。 前者用于根据需要标记参数。使用后者 将参数设置为允许的,并限制应设置哪些属性 允许大规模更新


我猜是有人添加了params.permit!在rails升级后,避免查看“强参数”并正确设置

解决此问题的正确方法是检查每个控制器,检查每个操作需要和希望允许的参数,然后使用params.permit(不带感叹号)设置允许参数的白名单:


我还发现,在单个参数调用上使用
to_unsafe_hash
方法将起作用,并绕过Brakeman警告。这里有一些关于这个方法的信息:

听起来像是发生了什么事情。所以,在每个方法之前,参数permit(:attribute1,:attribute2)?首先,Pavans的答案比我的更完整、更快。我建议选择它作为正确答案。第二:在大多数情况下,crud控制器只有两个使用参数的操作:更新和创建。通常(并非总是!)两个操作都允许相同的参数,因此在“person”控制器中定义“person_params”一次就足够了。我建议您阅读rails指南中的强参数:抱歉,我忘了早点回答!这基本上回答了我的问题。谢谢
params.require(:key).permit(:attr1, :attr2..)