[英]SQL Injection with an Escaped String?
目前,我現在有此PHP代碼用於身份驗證,我想弄清楚它是否容易受到MySQL注入的攻擊。 特別是如果有人可以通過UNION或其他攻擊返回假數據並因此假冒登錄名。 我目前正在使用mysqli_real_escape_string嘗試防止瑣碎的攻擊,並嘗試清理請求。 但是,由於使用mysqli_real_escape_string,此代碼是否完全安全,還是存在安全漏洞?
$email = mysqli_real_escape_string($database_connection, $_POST["email"]);
$pass = mysqli_real_escape_string($database_connection, $_POST["pass"]);
$query = "SELECT * FROM auths WHERE email='$email' AND pass='$pass'";
$query_result = mysqli_query($database_connection, $query);
if(mysqli_num_rows($query_result) === 1)
{
// User is logged in.
}
else
{
die("Unauthorized");
}
忘記mysqli_real_escape_string
。 只需使用准備好的語句
$conn = new mysqli('host', 'user', 'pass', 'database');
$stmt = $conn->prepare('select * from auths where email=? and pass=?');
$stmt->bind_param('ss', $_POST['email'], $_POST['pass']);
$stmt->execute();
if($stmt->num_rows > 0):
//user is logged in
else:
die('Unauthorized');
endif;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.