0

自从我了解到 attr_accessible 的安全漏洞以来,我一直在尝试非常小心地处理这类事情,所以我只需要澄清一下。

假设我有一个 Comment 模型,它有

attr_accessible :user_id

以我的形式,我做

= f.hidden_field :user_id, :value => @current_user.id

所以我不是从参数中获取值,而是从当前用户的实际 ID 中获取。

然而,我关心的不是我自己的表单,而是恶意请求。例如,如果有人要发送一个 post 请求,如下所示:

POST comments?user_id=5 

当他们的 user_id 实际上是 1 时。他们可以代表其他人发帖吗?

谢谢你。

4

1 回答 1

0

是的,你完全正确。我想我刚刚意识到了答案。基本上当一个属性不是 attr_accessible 时,你想直接在你的控制器中设置它,这使得它不可能像我上面提到的那样使用流氓请求来设置。此外,如果您的控制器直接从 params 设置变量,那么您就知道出了点问题并且该变量基本上是 attr_accessible。

谢谢弗洛

于 2013-07-27T02:46:07.463 回答