我有一个列出用户属性的表单,即Role,Group,IsApproved,...对于admin,这些已启用并可以更改。但对于普通用户来说,这些仅用于显示目的。该程序在加载表单时禁用它们。
问题是:对于普通用户,一旦他们看到这些,他们就可以使用开发人员工具来更改DOM中的值。例如,Role是一个下拉列表,它显示:Admin / GroupAdmin / User:
<select name="ctl00$MainContent$ddlRoles" id="MainContent_ddlRoles" class="aspNetDisabled" style="width:100px;" disabled="disabled">
<option selected="selected" value="Admin">Admin</option>
<option value="GroupAdmin">GroupAdmin</option>
<option value="User">User</option>
</select>
现在,用户删除了
disabled="disabled"
然后ddlRoles就可以了,用户可以更改它。
我的问题是:更新数据库时是否必须检查权限?或者,在asp.net中有一种简单的方法可以防止这种情况吗?
由于
答案 0 :(得分:2)
您无法在任何浏览器中保护DOM不被更改,显然您需要检查服务器上的用户权限。
您可以在代码中设置条件,因此如果用户没有任何权限,页面将为没有此元素的用户呈现,但在更新数据库时始终添加服务器端权限检查,因为客户端总是可以被编辑或“黑客攻击”。
答案 1 :(得分:1)
因为这似乎主要是客户端应用程序,所以您在浏览器中执行的身份验证类型主要是隐藏和禁用功能。这似乎正是你正在做的事情。
您需要进行服务器身份验证才能真正保护您的终端,并防止只是操纵您的前端的用户进行调用。