是否有必要保护Rails更新操作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否有必要保护Rails更新操作?相关的知识,希望对你有一定的参考价值。

如果保护Rails控制器中的编辑操作,以便,例如,只有登录的用户可以编辑他或她自己的配置文件,而没有其他人,是否还需要保护同一控制器中的更新方法,或者是它足以单独保护编辑方法?

def edit
  if current_user != User.find(params[:id])
    sound_loud_alarm
  elsif current_user = User.find(params[:id])
    allow_user_to_edit
  else
  end
end
答案

取决于您的路由/网址的方式。如果你在url中公开了user-id,你肯定应该因为一旦登录,我就很容易尝试重置其他人的密码。黑客很容易显示自己的表单,然后在发布之前执行inspect并编辑表单。

如果您使用GET :profilePOST/PUT :profile这样的网址,它允许用户仅查看和编辑自己的个人资料,他们就不能再尝试编辑其他人的个人资料(因为用户/个人资料数据与登录会话之间的链接是服务器端)。

如果您使用UUID网址,您的网址已经更加安全(更难以猜到其他网址),但这仍然不安全,因此您应该验证发布更新的会话的所有者是否相同。

以上是关于是否有必要保护Rails更新操作?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:旧数据与新数据不匹配时如何更新片段缓存

在每个用户的Rails中使用片段缓存

如何在 Rails 中清理 sql 片段

使用 Rails 3.1 :as => :admin 更新受 attr_accessible 保护的属性

Rails 3.2 - 为控制器操作禁用 CSRF 保护

是否有必要保护 JAX-RS 请求免受 CSRF 影响?