在asp.net中,PagesSection.ValidateRequest方法足以阻止所有XSS攻击,还是需要做更多的事情?
解决方法
AntiXSS库
Microsoft AntiXSS library是ASP.Net的一个很好的解决方案.它使用白名单(黑名单)方法,似乎由Microsoft定期更新.
最新下载(截至本文):http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28589
AntiXSS支持文本和HTML样式验证. HTML验证确实允许可能不合需要的内容(例如另一个域中的图像).
它要求您通过库运行每个输入值,这将产生额外的(尽管很简单的)代码.
using System; using Microsoft.Security.Application; public class AppText { public static string GetSafeHtml( string inputText ) { return Sanitizer.GetSafeHtmlFragment( inputText ); } public static string GetSafeText( string inputText ) { return Microsoft.Security.Application.Encoder.HtmlEncode( inputText ); } }
优点
手动验证每个输入可确保您不会假设安全性仅由ASP.Net请求验证“处理”.它还使您可以根据需要灵活地禁用请求验证(请求中存在可疑字符的合法情况).因为您使用AntiXSS库显式验证输入,所以您可以在请求中允许字符/标记.
一般XSS信息
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet