Ruby on rails RubyonRails-何时使用params.permit!如何替换它
我正在开发一个遗留的rails应用程序,控制器有许多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..) 更好的是,与 允许您选择哪些属性应被列入质量的白名单 更新,从而防
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..)