即使使用 mysql_real_escape_string()
是否也有 SQL 注入(inject)的可能性?功能?
考虑这个示例情况。 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'";
mysql_real_escape_string()
也可能被黑客入侵。使用的函数。但我想不出任何可能的漏洞?aaa' OR 1=1 --
最佳答案
考虑以下查询:
$iId = mysql_real_escape_string("1 OR 1=1");
$sSql = "SELECT * FROM table WHERE id = $iId";
mysql_real_escape_string()
不会保护您免受此侵害。' '
)这一事实可以保护您免受此影响。 以下也是一个选项:$iId = (int)"1 OR 1=1";
$sSql = "SELECT * FROM table WHERE id = $iId";
关于php - 绕过 mysql_real_escape_string() 的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741187/