Asp.net 在Viewstate中使用XSS防御CSRF

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

我正在为一个网站做一些漏洞测试。在测试过程中,我发现网站存在问题。我创建了一个小web表单,将数据提交到另一个web表单并运行一些JavaScript。可在下面查看该小型网站:

<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(&quot;ctl00$ContentPlaceHolder1$btnSubmit&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_ContentPlaceHolder1_btnSubmit" />
</form>

当我运行时,单击此表单上的“提交”按钮,我会在网页上看到一个错误,说明: “无效的viewstate”,但viewstate中的JavaScript仍在执行


默认情况下,EnableEventValidation设置为true,并且web.config或页面不会覆盖它。如何强制验证viewstate,但不执行JavaScript?

问题不在于在表单中防御CSRF或XSS。问题是错误页面在错误发生后打印出未初始化的viewstate字符串。

Hmm.
RequestValidation
是否已关闭?它未在页面或web.config中修改,默认情况下应设置为true。