SQL注入和.NET 4

时间:2010-10-08 14:01:41

标签: .net .net-4.0 sql-injection data-access

.NET 4中是否有工具可以针对SQL注入“自动化”SQL字段的验证?

我看过this文章,但是害怕可能不是最新的......

编辑:
Oracle Db兼容......

4 个答案:

答案 0 :(得分:5)

ADO.NET中最简单的工具是对所有可变的查询值使用 sql parameters 。这也具有效率优势。即使你的代码中有明确的sql并且根本没有使用存储过程或函数,你仍然可以通过使用相同的查询字符串来获得这两种的优点,同时仅改变参数的值。 / p>

当你真的需要动态地构造你的sql命令文本而不能使用sql参数时,可能有时候(例如使用搜索引擎)。这是不幸的,因为保护自己免受sql注入(各种消毒和关键字黑名单)的其他方式更多涉及并要求你要有思想和聪明。尽量避免这种情况!

答案 1 :(得分:1)

我相信你可以通过使用sqlparameters来避免这个问题。

答案 2 :(得分:1)

这是一个“ADO.NET”问题吗?如果是,那么SQLParameters是你的朋友。 Scott Gu关于这个主题的文章虽然陈旧但仍然非常有用并且有很好的建议。

http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx

如果您没有使用ADO.NET,那么大多数ORM都可以防止攻击。例如,LLBLGen生成参数化查询。和Linq一样对SQL。我猜他们都这样做,虽然检查你的ORM风味:)

答案 3 :(得分:0)

对我来说,最简单的方法是使用Linq2Sql查询数据库。文章中没有提到它,因为它不存在。您也可以使用Entity Framework。它提供更多的功能和更高的学习曲线。还有很多其他的ORM,大多数(也许除了我不知道)都会保护你免受SQL注入。另一个好处是ORM负责从结果中创建一个对象。

相关问题