我目前正致力于锁定报告网站XSS漏洞的应用程序。
该站点是为ASP.NET 2.0构建的,但已升级为在ASP.NET 4.0库中运行。
我使用安全工具扫描了该网站,并且报告的网页可以对XSS(反射)攻击开放。
我注意到在任何网页上都可以在QueryString参数中包含JavaScript,因为ASP.NET会自动将其附加到页面的表单操作上。
现在,如果启用了ValidateResponse,并且URL中的JavaScript是基本的,则页面将出错,如预期的那样。 如果JavaScript被编码,那么似乎ValidateResponse错过了它,驱使安全测试应用程序在测试传递给HTML时抛出错误。
举个例子:
The url /product.aspx?ProductGuid=1234
Case 1: /product.aspx?ProductGuid=<script>alert(1);</script>
In this case, ValidateResponse picks up the pieces, and errors for you.
Case 2: product.aspx?ProductGuid=%3Cscript%3Ealert%281%29%3B%3C%2Fscript%3E
In this case, ValidateResponse sees no issue.
The JavaScript is pushed through to the browser by ASP.NET itself, in the form's action.
我理解误报的概念,也许.NET确保操作中的URL被正确编码,但我不确定,因为我找不到任何明确的内容。
这类问题是误报吗? 如果没有,表格的行动如何正确消毒?
我似乎甚至无法找到这个问题,但在一些地方,我发现我的一般问题无处可寻。
谢谢大家的帮助。