2009-11-30 62 views
1

我得到的字段是自由形式的文本,并且只允许任何数字/符号的组合。验证这些以防止SQL注入的最佳方法是什么?我可以运行一个简单的替代刻度标记吗?有没有可以插入的方法?用于ASP.NET的SQL注入过滤方法

回答

8

只需使用参数化查询!点击这里,查看这篇文章:http://www.functionx.com/aspnet/sqlserver/parameterized.htm

+0

参数化查询是一道防线,但您仍然可以使用它们并使自己易受攻击。 看看这篇文章:http://www.owasp.org/index.php/Guide_to_SQL_Injection 并为OWASP网站添加书签来解决所有的安全问题。这是一个非常好的学习场所。 – David 2009-11-30 21:44:59

+2

@David:据我所知,参数化查询或存储过程唯一的潜在问题是如果你使用动态SQL。 “所以,不要这样!”。 – 2010-03-04 18:55:49

+0

@约翰桑德斯 - 绝对!我只是想向OWASP站点提及一个有安全问题的人。就目前而言,这是我在该主题上找到的最全面的资源。 – David 2010-03-04 21:48:13

1

有这里概述的各种方法: How To: Protect From SQL Injection in ASP.NET

报价:

对策包括使用的可接受的字符列表来限制输入,使用数据访问参数化的SQL ,并使用数据库中具有受限权限的最小特权帐户。因为SQL参数是类型安全的,所以推荐使用带参数化SQL的存储过程。类型安全的SQL参数也可以用于动态SQL。在不能使用参数化SQL的情况下,请考虑使用字符转义技术。

验证控件可以帮助,虽然他们运行在服务器端,而不是客户端。 ASP.NET也有一些内置的保护,但我不会单靠它。