所以我正在设置我的表单验证、输入、错误消息等......然后意识到我收集的很多信息需要在某个时候再次输出。
所以我把我的输入包装在:
Server.HtmlEncode(txtbox.text);
我还应该做些什么来确保我避免 XSS 类型的攻击?当我将数据写入页面时,我应该做些什么吗?
所以我正在设置我的表单验证、输入、错误消息等......然后意识到我收集的很多信息需要在某个时候再次输出。
所以我把我的输入包装在:
Server.HtmlEncode(txtbox.text);
我还应该做些什么来确保我避免 XSS 类型的攻击?当我将数据写入页面时,我应该做些什么吗?
从安全的角度来看,我们的 Web 表单是赤裸裸的并且 100% 易受攻击。我们需要查看数据传递给它们的所有方式并进行适当的测试:
* Form Fields
* URL Query Strings
* Cookies
* Database
* ViewState
安全 Web 应用程序的 MSDN 设计指南:http: //msdn.microsoft.com/en-us/library/aa302420.aspx
Microsoft 反跨站点脚本库:http: //msdn.microsoft.com/en-us/security/aa973814.aspx
代码分析工具 (CAT.NET): http ://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&displaylang=en
ASP.NET 数据输入验证: http: //www.codersbarn.com/post/2008/11/01/ASPNET-Data-Input-Validation.aspx:
编辑:即将推出,新的 Web 保护库 CTP:http: //blogs.msdn.com/securitytools/archive/2009/10/17/web-protection-library-ctp-release-coming-soon.aspx
我建议在将数据输出到页面时使用 HtmlEncode,而不是在收集数据时使用。来自Stack Overflow 播客 #58:
不要对存储在数据库中的数据进行 HTML 编码!听取 Damien Guard和 Joel Spolsky的建议!您可以选择存储两种表示形式,但不要只存储 HTML;以最高精度处理原始数据。
链接