即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?
考虑这个示例情况.SQL是用PHP构造的,如下所示:
$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));
$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)
我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?
像这样的经典注射:
aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)
不工作.
你知道任何可能通过上面的PHP代码注入的注入吗?
我正在寻找mysql_real_escape_string()SQL Server 的替代方案.是addslashes()我最好的选择还是可以使用另一种替代功能?
编辑:替代品mysql_error()也很有用.
我正在处理一个表单,其中有可能让用户在要提交给数据库的字符串中使用非法/特殊字符.我想在字符串中转义/否定这些字符,并且一直在使用htmlspecialchars().但是,有更好/更快的方法吗?
我没有看到任何有价值的信息或没有过时的信息.所以,有一个问题:mysql_real_escape_string()是否完全防止SQL注入?然而它是非常过时的(它来自'09),因此在12月的php 5.3和mysql 5.5中,它是否完全保护?