所以我正在设置表单验证,输入,错误消息等...然后意识到我收集的很多信息需要在某个时候再次输出。
所以我将输入包装在:
Server.HtmlEncode(txtbox.text);
我还应该做些什么来确保我避免XSS类型的攻击?当我将数据写入页面时,我应该做些什么吗?
答案 0 :(得分:1)
从安全角度来看,我们的Web表单是裸露的,100%易受攻击。我们需要查看数据传递给它们的所有方法并进行适当的测试:
* Form Fields
* URL Query Strings
* Cookies
* Database
* ViewState
安全Web应用程序的MSDN设计指南: http://msdn.microsoft.com/en-us/library/aa302420.aspx
Microsoft Anti-Cross Site脚本库: 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 Protection Library CTP: http://blogs.msdn.com/securitytools/archive/2009/10/17/web-protection-library-ctp-release-coming-soon.aspx
答案 1 :(得分:1)
我建议您在向页面输出数据时使用HtmlEncode,而不是在收集数据时。来自Stack Overflow podcast #58:
不要HTML编码存储在数据库中的数据!拿good advice of Damien Guard和Joel Spolsky!您可以选择存储两种表示形式,但不要仅存储HTML;以最高精度处理原始数据。
<强>链接强>