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你没有这个问题.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...