在我的应用程序中,我有一个“用户”模型,其中包括一些属性,包括“has_admin_rights”。如果为true,则用户是管理员,如果为false,则不是。防止用户使自己的管理员
每个用户都有一个配置文件,用自己的登录名,电子邮件地址,个人资料相片等
如果我登录作为一个普通用户,我可以点击一个名为“个人资料”页面上,并我可以编辑自己的帐户,例如更新我的电子邮件地址,个人资料图片,密码,等等。我只能编辑我的帐户,而不能使用其他帐户。
如果我以管理员身份登录,我可以做更多:例如,我可以让另一个用户成为管理员,或拿走他们的管理员权限。
现在,只有管理员才能访问“make admin”复选框出现的视图,但我有一种感觉,仅仅限制对视图的访问是不够的。
我担心的是,因为任何用户都可以编辑他们自己的配置文件,那里有什么来阻止用户提交自定义表单帖子,其中包含他们的“has_admin_rights”=>“1”参数自己的帐户 - 从而授予他们自己的管理权限?
我在想的是,在用户控制器中,在对“has_admin_rights”字段应用任何更改之前,我需要检查以确保发出请求的用户当前是管理员 - 否则我会忽略完全要求,不作任何改变。
你回答了你自己的问题。 UI的隐藏位不是安全措施,您必须始终检查实际进入的请求,并在此时确定是否允许该请求。 – 2010-07-05 14:57:24
甚至比完全忽略请求更好的方法是发出错误消息。你永远不知道什么时候它可能有助于调试一个问题! – 2010-07-06 04:43:39