我知道你们中的一些人可能会结束这个问题,但我的问题是由你们和你们的回答提出的。我正在阅读过去两个小时有关 SQL 注入以及如何保护数据库的问题和解答。我看到的大量网页和教程也是如此。
我发现一半的人声称准备语句确实可以保护您的数据库,而另外 50 人则声称事实并非如此。
另一方面,我读到 mysql_real_escape_string 可以完成这项工作,而其他人则说它不是。
我的问题是该相信谁?
另外,这是一个正确的准备语句吗?
$stmt = $dbh->prepare("SELECT phpro_user_id, phpro_username, phpro_password FROM phpro_users
WHERE phpro_username = :phpro_username AND phpro_password = :phpro_password");
/*** bind the parameters ***/
$stmt->bindParam(':phpro_username', $phpro_username, PDO::PARAM_STR);
$stmt->bindParam(':phpro_password', $phpro_password, PDO::PARAM_STR, 40);
/*** execute the prepared statement ***/
$stmt->execute();
两个都。当且仅当您以正确的方式使用准备好的语句时,它们才能保护您免受 SQL 注入。例如,如果您仍在为表/列名称插入变量,那么仅“使用”准备好的语句将无济于事。
$stmt = "SELECT * FROM $table WHERE $column = ?"; //not good...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)