是否有必要保护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。如果您将用户ID公开在URL中,则绝对应该是因为登录后,例如,我很容易尝试重置其他人的密码。黑客很容易显示自己的表格,然后在发布之前进行inspect并编辑表格。

如果您使用诸如 GET :profilePOST/PUT :profile之类的URL,允许用户仅查看和编辑自己的个人资料,则他们无法再尝试尝试编辑他人的配置文件(因为用户/profile/profile-data和在会话中登录的服务器端)。

如果您使用UUID URL的URL已经更加安全(很难猜测别人URL),但这仍然不是安全的,因此您应该验证发布更新的会话的一个所有者是否相同。

最新更新