這是個簡單的sqli的問題
輸入 : ' or 2=2--
這像是把--後面都註解
SQL查詢和用戶提供的參數分開
資料庫會將參數作為純數據處理,而不是查詢語句的一部分
// 準備查詢語句,使用 :username 和 :password 作為佔位符
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
// 綁定參數,然後執行查詢
$stmt->execute(['username' => $username, 'password' => $password]);
// 獲取結果
$result = $stmt->fetchAll();
使用 :username 和 :password 作為佔位符,而不是直接插入變數值。
execute 函數會將 ['username' => $username, 'password' => $password] 中的值綁定到佔位符中。
即使 password 輸入了類似 ' OR '1'='1 的值,數據庫也會將其視為純文本,而不會將其作為 SQL 語句執行。