Rails 3教程Michael Hartl - 第9.4.1节重新访问attr_accessible - 恶意PUT请求

时间:2012-05-18 23:35:31

标签: ruby-on-rails curl attr-accessible

我是Rails的初学者,目前正在阅读Michael Hartl的Rails 3教程并提出一个我真正好奇的问题:
在通过'faker'创建管理员用户和其他99个普通用户的情况下,Hartl解释了为什么在用户模型中将attr_accessible添加“:admin”并因此添加“admin:true”是一个坏主意。 'faker'测试代码中的初始化哈希。相反,他解释说应该使用“toggle!(:admin)”并避免在可访问属性中添加“:admin”,因为否则恶意用户可以直接发送PUT请求,如“PUT / users / 17?admin = 1”。 http://ruby.railstutorial.org/book/ruby-on-rails-tutorial#sec:revisiting_attr_accessible

所以,遵循Hartl的建议我的管理员布尔现在是安全的,但我的其他用户属性如名称,电子邮件,它被定义为可访问的属性呢?这是否意味着恶意用户可以通过类似于上面的PUT请求轻松更改这些属性?在教程中,Hartl谈到了一个名为curl的命令行工具,它可以发出这样的PUT请求表单。我真的不想尝试使用我的示例应用程序,我的问题是,我是否忽略了某些内容或者是否存在恶意PUT请求,例如“put / users / 17?name ='new_name'”?

如果有人回答我的问题,请提前感谢您!

1 个答案:

答案 0 :(得分:2)

是的,它们可以通过PUT进行更改,但总的来说这就是你想要的。 您仍应检查当前用户是否有权在用户上设置这些字段。

管理标志等是特殊情况,因为您希望能够明确地设置它们,而不是批量分配。您不希望用户将自己设置为管理员,但让用户更改自己的电子邮件地址或名称或任何应该没问题的用户。