Ruby 于 Rails - 何时使用 params.permit!以及如何更换它
Ruby on Rails - When to use params.permit! and how to replace it
我正在处理遗留 rails 应用程序,控制器有许多 params.permit!
实例。当 运行 Brakeman 对其进行扫描时,params.permit!
将应用程序打开到批量分配漏洞。
我的问题是 - 解决此问题的最有效方法是什么 params.permit!漏洞并替换它?
params.permit!
白名单所有属性导致批量赋值漏洞。解决这个问题的最好方法是只将 必要的属性 列入白名单,就像这样
params.permit(:attr1,:attr2..)
Allows you to choose which attributes should be whitelisted for mass
updating and thus prevent accidentally exposing that which shouldn't
be exposed. Provides two methods for this purpose: require and permit.
The former is used to mark parameters as required. The latter is used
to set the parameter as permitted and limit which attributes should be
allowed for mass updating.
params.require(:key).permit(:attr1, :attr2..)
我假设有人添加了 params.permit! rails 升级后避免查看 "strong parameters" 并正确设置它。
解决此问题的正确方法是遍历每个控制器并查看您需要的参数以及希望为每个操作允许的参数,然后使用 params.permit(没有感叹号)设置白名单对于允许的参数:
https://apidock.com/rails/ActionController/Parameters/permit
我还发现,在单个参数调用上使用 to_unsafe_hash
方法可以解决 Brakeman 警告。有关此方法的一些信息:https://apidock.com/rails/v4.2.7/ActionController/Parameters/to_unsafe_hash
我正在处理遗留 rails 应用程序,控制器有许多 params.permit!
实例。当 运行 Brakeman 对其进行扫描时,params.permit!
将应用程序打开到批量分配漏洞。
我的问题是 - 解决此问题的最有效方法是什么 params.permit!漏洞并替换它?
params.permit!
白名单所有属性导致批量赋值漏洞。解决这个问题的最好方法是只将 必要的属性 列入白名单,就像这样
params.permit(:attr1,:attr2..)
Allows you to choose which attributes should be whitelisted for mass updating and thus prevent accidentally exposing that which shouldn't be exposed. Provides two methods for this purpose: require and permit. The former is used to mark parameters as required. The latter is used to set the parameter as permitted and limit which attributes should be allowed for mass updating.
params.require(:key).permit(:attr1, :attr2..)
我假设有人添加了 params.permit! rails 升级后避免查看 "strong parameters" 并正确设置它。
解决此问题的正确方法是遍历每个控制器并查看您需要的参数以及希望为每个操作允许的参数,然后使用 params.permit(没有感叹号)设置白名单对于允许的参数:
https://apidock.com/rails/ActionController/Parameters/permit
我还发现,在单个参数调用上使用 to_unsafe_hash
方法可以解决 Brakeman 警告。有关此方法的一些信息:https://apidock.com/rails/v4.2.7/ActionController/Parameters/to_unsafe_hash