1)
输入过滤,对于整数,判断变量是否符合[0-9]的值;其他限定值,也可以进行合法性校验;对于字符串,对SQL语句特殊字符进行转义(单引号转成两个单引号,双引号转成两个双引号)。MySQL也有类似的转义函数mysql_escape_string和mysql_real_escape_string。Asp的过滤参考此页面http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx
2)
在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
3)
使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL,安全API库如ESAPI。
4)
使用SQL防注入系统。
5)
严格限制数据库操作的权限。普通用户与系统管理员用户的权限要有严格的区分。建立专门的账户,同时加以权限限制,满足应用的需求即可。