【发布时间】:2013-10-02 02:29:24
【问题描述】:
我只是不明白。在获取数据方面,准备好的语句比未准备好的语句更安全。我不是在谈论写入数据库,只是在获取数据。我看不出 userFname 和 userLname 比 userEmail 和 userPassword 更安全。提前致谢。
$stmt = $mysqli->stmt_init();
if ($stmt->prepare("SELECT userFname, userLname FROM users WHERE userEmail = ? and userPassword = ?")) {
$stmt->bind_param("ss", $userEmail, $userPassword);
$stmt->execute();
$stmt->bind_result($userFname, $userLname);
while ($stmt->fetch()) {
//Remember first name, last name, and email
$_SESSION['Email']=$userEmail;
$_SESSION['Fname']=$userFname;
$_SESSION['Lname']=$userLname;
$stmt->close();
//go to dashboard page
header ("location: dashboard.php");
}
$error2="Email and Password do not match, please try again.";
}
【问题讨论】:
-
SQL 注入只是利用不正确转义的变量来修改您的查询。即使您不向数据库写入任何内容,它们仍然可能发生。
-
使用准备好的语句是否更安全。它没有绑定,即使在准备好的语句中也是如此。
标签: mysqli sql-injection