首頁 >資料庫 >mysql教程 >PHP 中的參數化查詢如何防止 MySQL 資料庫中的 SQL 注入?

PHP 中的參數化查詢如何防止 MySQL 資料庫中的 SQL 注入?

Linda Hamilton
Linda Hamilton原創
2024-11-02 07:07:30396瀏覽

How can Parameterized Queries in PHP Protect against SQL Injection in MySQL Databases?

用於安全MySQL 連接的PHP 參數化查詢

SQL 注入仍然是一種持續的安全威脅,可能會危及資料庫應用程式中的敏感資料。參數化查詢是減輕這種風險的關鍵技術。然而,正確實作它們不僅需要了解查詢本身,還需要了解資料庫連接過程。

考慮 PHP 登入頁面中的以下程式碼片段:

<code class="php">$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);</code>

此程式碼容易受到SQL 注入,因為使用者提供的輸入 $userName 和 $userPass 直接包含在查詢字串中。

要實現參數化查詢,請將此程式碼替換為以下內容:

<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_prepare 準備一個可以多多>
  • mysqli_prepare 準備一個可以多次執行的PDO 語句物件。
  • mysqli_stmt_bind_param 將使用者提供的輸入綁定到 SQL 查詢中的參數化佔位符 (?),從而防止SQL 注入。
  • mysqli_stmt_execute 執行準備好的語句。
mysqli_stmt_fetch 檢索結果行。

請記住加密或雜湊使用者密碼以增加安全性。參數化查詢以及這些附加措施可確保 PHP 應用程式中安全的 MySQL 資料庫互動。

以上是PHP 中的參數化查詢如何防止 MySQL 資料庫中的 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn