是的,你说得对。我想我刚刚意识到了答案。基本上,当一个属性不可attr_accessible时,你想直接在控制器中设置它,这使得它不可能像我上面提到的那样用流氓请求来设置。此外,如果你的控制器直接从params设置一个变量,那么你就知道出了问题,而且这个变量基本上是attr_accessible。
自从我了解了attr_accessible的安全漏洞后,我一直在努力非常小心地处理这类事情,所以我只需要澄清一下。
假设我有一个Comment模型,它有
attr_accessible :user_id
在我的表格中,我做
= f.hidden_field :user_id, :value => @current_user.id
所以我不是从params中获取值,而是当前用户的实际ID。
然而,我关心的不是我自己的表格,而是流氓请求。例如,如果有人发送如下邮件请求:
POST comments?user_id=5
当它们的user_id实际上是1时。他们能代表别人发帖吗?
谢谢。
感谢Flo