如果保护导轨控制器中的编辑操作,例如,只有登录的用户才能编辑他或她自己的个人资料,而没有其他人也有必要在同一控制器中保护更新方法,还是仅保护编辑方法?
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 :profile
和 POST/PUT :profile
之类的URL,允许用户仅查看和编辑自己的个人资料,则他们无法再尝试尝试编辑他人的配置文件(因为用户/profile/profile-data和在会话中登录的服务器端)。
如果您使用UUID URL的URL已经更加安全(很难猜测别人URL),但这仍然不是安全的,因此您应该验证发布更新的会话的一个所有者是否相同。