哪一项是对的,真的很安全? 使用准备好的陈述:
$stmt= $db->prepare("INSERT INTO books (title) VALUES (?)");
$booktitle=$_POST['booktitle'];
$stmt->bind_param('s', $booktitle);
$stmt->execute();
或使用转义功能:
$unsafe_variable = $login;
$safe_variable = mysqli_real_escape_string($unsafe_variable);
$stm=mysqli_query($db,"SELECT post_amount FROM users WHERE login='" . $safe_variable . "'");
$stmone=mysqli_fetch_assoc($stm);
$stmtwo=implode($stmone);
echo($stmtwo);
请帮忙处理。
答案 0 :(得分:3)
第一种选择方式更好。我不能强调这一点。它不仅可以确保您始终自动处理事务,还可以为您提供更清晰的代码。如果你不使用准备好的陈述,那么只需要在你的卫生设施中错过一次,你就会对攻击敞开大门。地狱,准备好的陈述是mysqli首先被引入的原因的一半。
答案 1 :(得分:0)
第一个选项更好,它可以为您提供干净的代码并自动处理所有事情
答案 2 :(得分:0)
技术上两者都是安全的。
但是,使用预准备语句会强制您转义所有变量。您不能错过使用预准备语句的escape_string
电话。
另请参阅PDO,它有更好的方式来处理预先准备好的语句:)