是否有经过全面测试的.NET库,可用于清理输入内容,以防止脚本/SQL注入等攻击?
是否有经过全面测试的.NET库,可用于清理输入内容,以防止脚本/SQL注入等攻击?
我喜欢使用Microsoft AntiXSS库。它是免费的,而且相当容易使用。
在防止SQL注入方面,我总是使用参数。同样,它们很容易使用,而且我不喜欢尝试转义特殊字符。如果你问我,那是灾难的食谱。
SQL注入和跨站脚本攻击(又称XSS或脚本注入)是不同的问题。
1)SQL注入非常容易,总是使用参数化查询(SQLParameter),并且尽力不要在T-SQL存储过程中执行sp_exec @query。 .Net参数化查询无法防止第二次注入。
2)对于XSS攻击,由于JavaScript可以插入到HTML文档的许多位置中,因此普遍缓解更为困难。推荐使用AntiXSS编码用户数据是正确的做法。在将用户数据插入输出文档之前,请使用此库。不幸的是,如果您正在使用ASP.Net服务器控件,所有数据的编码可能会导致双重编码和显示伪像。这是因为一些控件属性对数据进行编码,而其他属性则不是。请参考此表格查找默认编码的属性。在分配不编码任何属性之前,请使用Anti-XSS。
如果您正在使用ASP.NET 4.5,现在可以使用框架中提供的AntiXSS功能。
以下是已纳入ASP.NET 4.5的外部AntiXSS库的部分内容:
HtmlEncode
、HtmlFormUrlEncode
和HtmlAttributeEncode
XmlAttributeEncode
和XmlEncode
UrlEncode
和UrlPathEncode
(新)CssEncode
System.Web.dll
和 using System.Web;
和 using System.Web.Security.AntiXss;
。 - Hp93