簡體   English   中英

帶轉義字符串的SQL注入?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM