使用 MySQL 連線進行 PHP 參數化查詢
在 Web 開發領域,SQL 注入構成了重大的安全威脅。透過編造惡意查詢,攻擊者可以繞過身份驗證機制並存取敏感資料。參數化查詢為此漏洞提供了萬無一失的解決方案。
讓我們考慮PHP 登入頁面中的一段程式碼,程式碼片段無法防範SQL 注入:
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); $row = mysqli_fetch_array($result); if (!$row) { echo "No existing user or wrong password."; }</code>
要使用參數化查詢,我們需要建立與資料庫的連接並準備參數化語句。以下程式碼提供了修改後的範例:
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "s", $userName); mysqli_stmt_bind_param($stmt, "s", $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
以下是程式碼細分:
在此參數化查詢中,佔位符可防止注入惡意輸入,因為它們被綁定值取代。此外,為了增強安全性,必須對密碼進行加密或雜湊處理,避免儲存明文密碼。透過採用參數化查詢,PHP 開發人員可以有效保護其 Web 應用程式免受 SQL 注入攻擊。
以上是PHP 中的參數化查詢如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!