Tao*_*que 4 c# asp.net security authorization webforms
我正在制作一个简单的网站,列出某个文件夹中的文件.如果用户具有管理员权限,则用户可以通过单击"删除"按钮来删除文件.
在我的.aspx文件中,我有以下代码:
<asp:Button runat="server" Text="Delete" OnCommand="FileList_Delete"
            CommandArgument='<%#Eval("FilePath")%>' Visible='<%CurrentUserIsAdmin()%>' />
因此,如果CurrentUserIsAdmin()返回则不会呈现按钮false.
该按钮呈现如下:
<input type="submit" name="ctl00$ctl00$MainContent$LocalMainContent$FileList$ctrl0$ctl17" value="Delete" />
我的问题是:如果用户修改网页客户端旨在点击这个隐形按钮,我能否确定这种方法对于已知代码攻击是安全的?或者我是否必须在代码隐藏中采取预防措施并在按钮单击事件中验证用户的权利?
是的,一个按钮的设置Visible属性设置为false,就足以防止其Click和Command事件被提高,只要你不关闭默认的WebForms安全功能.
您可以通过临时将<input>.aspx中始终可见的元素添加到name渲染中来轻松测试<asp:Button>:
<input type="submit"
       name="ctl00$ctl00$MainContent$LocalMainContent$FileList$ctrl0$ctl17"
       value="Fake Delete" />
当真正的删除按钮不可见时,单击虚假删除按钮.你应该得到一个"无效的回发或回调参数.事件验证已启用......"异常.
重要笔记:
Visible在if (!IsPostBack)块中将按钮的属性设置为false,因为攻击者可能会绕过该检查.有关更多信息,请参阅此答案.EnableEventValidation="False"到@Page指令或<pages enableEventValidation="false" />Web.config 来关闭它.EnableViewStateMac="False"的@Page指令,或<pages enableViewStateMac="false" />到Web.config中.这将允许攻击者篡改隐藏的__EVENTVALIDATION字段并执行其他令人讨厌的事情.[SupportsEventValidation]属性添加到派生类.RegisterForEventValidation,并ValidateEvent在适当的地方.| 归档时间: | 
 | 
| 查看次数: | 886 次 | 
| 最近记录: |