作者:手机用户2502940275 | 来源:互联网 | 2023-08-13 16:45
我正在使用预处理语句和MySQLi查询以防止注入攻击.准备好的语句是否完全不需要mysql_real_escape_string?在保护我的网站时还有什么我应该考虑的吗?解决方法:
我正在使用预处理语句和MySQLi查询以防止注入攻击.准备好的语句是否完全不需要mysql_real_escape_string?在保护我的网站时还有什么我应该考虑的吗?
解决方法:
只要您正确使用准备好的陈述,他们就会.您必须确保绑定所有外部变量,而不是直接将它们放在查询中.
例如
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=" . $name);
这个语句正在准备中,但它没有使用其中一种绑定方法,所以它没有用.它仍然容易受到SQL注入攻击.
要解决这个问题,请确保绑定所有内容……
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
$stmt->bind_param("s", $city);