这个问题不是关于为经过验证的函数创建一个实际的替代方案来防止注入,而是关于如何与那些没有看到他们自制的注入预防代码中的缺陷的人争论!
我试图向一位同事说明一点,但似乎他对 SQL 注入的“解决方案”对我来说似乎相当安全。
他通过执行清除查询
$query = $_POST['username'];
$look = array('&', '#', '<', '>', '"', '\'', '(', ')', '%');
$safe = array('&', '#', '<', '>', '"', ''', '(', ')', '%');
str_replace($look, $safe, $query);
然后继续登录
"SELECT * FROM users WHERE username = '" . $query . "'
AND password = '" . md5($_POST['password']) . "'";
我试图让他使用 PDO 或等效项,但你怎么能真正违反这种保护?我没有答案,这真的让我很烦,因为我无法向他解释这有多不安全以及为什么不应该这样做。