ruby-on-rails – 为什么切片参数哈希在质量分配上造成安全问题?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 为什么切片参数哈希在质量分配上造成安全问题?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通过质量分配来防止安全风险的正式方法是使用 attr_accessible.但是,有些程序员觉得这不是模型的工作(或至少不仅仅是模型).在控制器中执行此操作的最简单的方式是将params哈希:
@user = User.update_attributes(params[:user].slice(:name))

文件规定:

Note that using Hash#except or Hash#slice in place of attr_accessible
to sanitize attributes won’t provide sufficient protection.

这是为什么?为什么白名单片段的params不能提供足够的保护?

更新:Rails 4.0 will ship strong-parameters,一个精细的参数切片,所以我猜整个切片的东西都没有那么糟糕.

解决方法

除了控制器之外,切片的问题可能与您的模型中的accept_nested_attributes_for相结合.如果使用嵌套属性,则需要在所有地方进行切片参数,在控制器中更新它们,这并不总是最简单的任务,尤其是深层嵌套的场景.使用attr_accesible你没有这个问题.

猜你在找的Ruby相关文章