SQL注入攻击也是一种输入验证的漏洞。特别的是,它们可以利用数据库查询。举例来说,在你的PHP脚本中,你可能会要求用户输入他们的ID和密码,然后检查他们的密码和数据库中的用户信息是不是吻合。SELECT * FROM users WHERE name='$username' AND pass='$password';但,如果用户在登陆时用另外一种迂回的方法,你可以输入下面的信息做为他的密码。' OR '1'='1这样就会导致SQL查询语句变成下面这样SELECT * FROM users WHERE name='known_user' AND pass='' OR '1'='1';这样就会在不加以验证的情况下返回用户名,因为在任何情况下上面的SQL语句都是正确的,因为'1'='1'永远正确。这样恶意用户就可以随便选一个用户名登陆你的系统。你可以在PHP.INI中打开magic_quotes_gpc。但如果你用的是共享的服务器,而你没有权限修改php.ini的话,你可以用代码来检测magic_quotes_gpc是否是on,如果是off的话,那么你应该在把用户提交的数据用addslashes()函数过滤,然后提交给数据库。代码如下if (magic_quotes_gpc()){ 
 $username = $_GET["username"]; 
} else { 
 $username = addslashes($_GET["username"]); 
}如果magic_quotes_gpc是on的话,就不要用addslashes()函数了,如果你用了的话,就时一些特殊符号转义两次,这样会导致错误。
SQL注入漏洞不会总是导致扩大权限。比如,恶意用户可以通过他得到已选择的数据库中的记录。
在用户提交数据给数据库查询时,你应该要检查是否包含 ' " , ; ( ) 这些符号,甚至要检查是否包含关键字,比如 FROM , LIKE , WHERE 等。这写是SQL注入攻击中常见的字符,所以当这些字符是不必要的话,你应该在用户提交数据时过滤掉,那么你就不用担心SQL注入这种漏洞了。