14

是否有任何经过彻底测试的 .NET 库来清理来自脚本/sql 注入之类的输入?

4

5 回答 5

10

我喜欢使用Microsoft AntiXSS 库。它是免费的,而且很容易使用。

对于 SQL 注入,我总是使用参数。同样,它们易于使用,我不喜欢尝试转义特殊字符。如果你问我,这是灾难的秘诀。

于 2009-06-02T12:12:34.850 回答
10

SQL 注入和跨站点脚本(又名 XSS 或脚本注入)是不同的问题。

1) SQL 注入非常简单,始终使用参数化查询 (SQLParameter),并且非常努力地永远不要在 T-SQL 存储过程中执行 sp_exec @query。.Net 参数化查询不会防止这种二阶注入。

2) XSS 更难以普遍缓解,因为有很多地方可以将 JavaScript 插入 HTML 文档。使用 AntiXSS 对用户数据进行编码的建议是正确的。在将用户数据插入输出文档之前使用此库。不幸的是,如果您使用 ASP.Net 服务器控件对所有数据进行编码,可能会导致双重编码和显示伪影。发生这种情况是因为某些控件属性对数据进行编码,而另一些则没有。请参阅此表以找出默认编码的属性。在分配给任何不编码的属性之前使用 Anti-XSS。

于 2009-06-02T13:41:30.507 回答
6

使用参数化命令,而不是尝试清理字符串,以防止 SQL 注入。

于 2009-06-02T12:11:01.813 回答
3

AntiXSS可用于防止 XSS 攻击。

于 2009-06-02T12:14:02.943 回答
1

如果您使用的是 ASP.NET 4.5,您现在可以使用框架中附带的 AntiXSS 功能

这些是已合并到 ASP.NET 4.5 中的外部 AntiXSS 库的部分:

  • HtmlEncode, HtmlFormUrlEncode, 和HtmlAttributeEncode
  • XmlAttributeEncodeXmlEncode
  • UrlEncodeUrlPathEncode(新)
  • CssEncode
于 2012-10-30T10:55:24.907 回答