2010-10-08 82 views
1

.NET 4中是否有工具可以根据SQL注入来“自动化”SQL域的验证?SQL注入和.NET 4

我看到this文章,但恐怕会不日期...

编辑:
甲骨文 Db的兼容...

回答

1

我相信你使用sqlparameters避免此问题。

5

ADO.NET中最简单的工具是使用SQL参数来查看所有可变的查询值。这也具有效率优势。即使您的代码中包含明确的sql,但完全没有使用存储过程或函数,您仍然可以通过使用相同的查询字符串,同时仅改变参数的值而获得这些优点。

当你真的需要动态地构建你的sql命令文本而不能使用sql参数时,可能会有时间(例如搜索引擎)。这很不幸,因为保护自己免受sql注入(其他各种消毒和关键字黑名单)的其他方式更为复杂,并且需要您体贴周到,聪明。尽量避免这种情况!

+0

即使动态构建查询,我也能够使用参数。这很值得。 – 2010-10-08 14:13:53

+0

关于效率的好处 – 2010-10-08 14:15:15

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那么大多数奥姆斯会防止你的攻击。例如,LLBLGen生成参数化查询。像Linq to SQL一样。我猜他们都这样做,虽然检查你的味道ORM :)

0

对我来说,最简单的方法是使用Linq2Sql来查询数据库。这篇文章没有提到,因为它不存在。你也可以使用实体框架。它提供了更高的功率和更高的学习曲线。还有很多其他的ORM,大多数(可能都是,但我不知道)会防止SQL注入。另一件好事是ORM负责从结果中创建一个对象。