有人能解释一下-为什么准备好的陈述更安全:
$stmt = $conn->prepare("INSERT INTO users (user, pass, salt)
VALUES (:user, :pass, :salt");
$stmt->bindParam(":user", $user);
$stmt->bindParam(":pass", $pass);
$stmt->bindParam(":salt", $salt);
$stmt->execute();首先使用占位符准备插入查询,然后将值替换为占位符,但是-著名的secure point在哪里?
发布于 2013-01-15 17:46:30
这些值不放在占位符中(取决于后端,有些人进行模拟,但不讨论它们,因为这不是准备好的语句)。传统SQL的问题是命令和数据是混合的。预先准备好的陈述可以避免这个问题,在任何时候都要把它们分开。准备好的语句不仅仅是自动执行mysqli_real_escape_string的一种奇特的方式。
https://stackoverflow.com/questions/14343570
复制相似问题