新手问题 mass assignment 的原理是什么。在缺少 activerecord 的情况下要如何应对?

metal · 2012年09月08日 · 最后由 kenshin54 回复于 2012年09月08日 · 2988 次阅读

不是很明白这东西。大概是了解的情况是就是要是我知道字段名的话,就可以通过浏览器进行以下操作。

http://www.xxx.com/posts/create/?tiile=foo&body=xxxsadasdasdasdasd

我在本机测试一个 sinatra 应用,通过这个方式还真可以把一个普通用户变成管理员,实在太可怕了。

attr_accessible ActiveRecord 里有个 whitelist 的设置,然后在每个 model 中 attr_accessible 你的 form 字段,这样只能提交你允许的了

或者自己手动写个方法在控制器中检查参数也行。要不然就直接手动赋值 不用 mass

params.slice(:title, :body)

mass assignment 不是 active record 的 而是 active model 的 如果你的模型使用 am 的话 一样可以使用

原来写 cakephp 的时候 使用的就是@Rei 的方式 写一个 unset 敏感字段的函数

楼上正解,include ActiveModel::MassAssignmentSecurity

需要 登录 后方可回复, 如果你还没有账号请 注册新账号