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

问题描述 投票:0回答:1

如果保护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
ruby-on-rails methods permissions access
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.