Asp.net 在Viewstate中使用XSS防御CSRF
我正在为一个网站做一些漏洞测试。在测试过程中,我发现网站存在问题。我创建了一个小web表单,将数据提交到另一个web表单并运行一些JavaScript。可在下面查看该小型网站:Asp.net 在Viewstate中使用XSS防御CSRF,asp.net,xss,viewstate,csrf,Asp.net,Xss,Viewstate,Csrf,我正在为一个网站做一些漏洞测试。在测试过程中,我发现网站存在问题。我创建了一个小web表单,将数据提交到另一个web表单并运行一些JavaScript。可在下面查看该小型网站: <form name="aspnetForm" method="post" action="https://[URL]" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm"> <type="hidden" select nam
<form name="aspnetForm" method="post" action="https://[URL]" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
<type="hidden" select name="ctl00$ContentPlaceHolder1$ddlCategory" id="ctl00_ContentPlaceHolder1_ddlCategory">
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="</span><script>alert(1);</script><span>" />
</div>
<input type="submit" name="ctl00$ContentPlaceHolder1$btnSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$btnSubmit", "", true, "", "", false, false))" id="ctl00_ContentPlaceHolder1_btnSubmit" />
</form>
当我运行时,单击此表单上的“提交”按钮,我会在网页上看到一个错误,说明:
“无效的viewstate”,但viewstate中的JavaScript仍在执行
默认情况下,EnableEventValidation设置为true,并且web.config或页面不会覆盖它。如何强制验证viewstate,但不执行JavaScript?问题不在于在表单中防御CSRF或XSS。问题是错误页面在错误发生后打印出未初始化的viewstate字符串。Hmm.
RequestValidation
是否已关闭?它未在页面或web.config中修改,默认情况下应设置为true。