是否有经过全面测试的.NET库来清理脚本/ sql注入等内容的输入?
答案 0 :(得分:9)
我喜欢使用Microsoft AntiXSS library。它是免费的,非常容易使用。
对于SQL注入,我总是使用参数。同样,它们易于使用,我不喜欢试图逃避特殊字符。如果你问我,这是一个灾难的秘诀。
答案 1 :(得分:8)
SQL注入和跨站点脚本(例如,XSS或脚本注入)是不同的问题。
1)SQL注入非常简单,总是使用参数化查询(SQLParameter)并且很难在T-SQL存储过程中尝试sp_exec @query。 .Net参数化查询无法防止这种二阶注入。
2)XSS更难以普遍缓解,因为有很多地方可以将JavaScript插入到HTML文档中。使用AntiXSS编码用户数据的建议是正确的。在将用户数据插入输出文档之前使用此库。不幸的是,如果您使用ASP.Net服务器控件编码所有数据可能会导致双重编码和显示工件。发生这种情况是因为某些控件属性会编码数据而其他控制属请参阅this table以查找默认编码的属性。在分配给任何不编码的属性之前使用Anti-XSS。
答案 2 :(得分:6)
使用parameterised commands,而不是尝试清理字符串,以防止SQL注入。
答案 3 :(得分:3)
AntiXSS可用于防止XSS攻击。
答案 4 :(得分:0)
我使用过MS Anti XSS库。它非常有用且易于使用。亲自尝试,你会喜欢。当前版本是4.0。
答案 5 :(得分:0)
如果您使用的是ASP.NET 4.5,现在可以使用AntiXSS features that ship in the framework。
这些是已整合到ASP.NET 4.5中的外部AntiXSS库的部分:
HtmlEncode
,HtmlFormUrlEncode
和HtmlAttributeEncode
XmlAttributeEncode
和XmlEncode
UrlEncode
和UrlPathEncode
(新)CssEncode