使用參數化查詢進行安全資料庫互動
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); //$dbc is for MySQL connection: $dbc = @mysqli_connect($dbhost, $dbuser, $dbpass, $db) $row = mysqli_fetch_array($result); if(!$row){ echo "No existing user or wrong password."; }</code>
實作參數化查詢:
為了防止SQL注入,將此程式碼替換為:
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
連線處理:
在原始程式碼中,使用 mysqli_connect() 建立與資料庫的連線。這需要在執行任何查詢之前完成。在繼續操作之前,請確保您擁有有效的 $dbc。
安全最佳實踐:
以上是參數化查詢如何防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!