首頁 >資料庫 >mysql教程 >如何安全地使用 MySQL 的 LIKE '%{$var}%' 和預處理語句?

如何安全地使用 MySQL 的 LIKE '%{$var}%' 和預處理語句?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-16 10:52:59883瀏覽

How Can I Safely Use MySQL's LIKE '%{$var}%' with Prepared Statements?

保護您的資料庫:在準備好的語句中正確使用 LIKE '%{$var}%'

建立響應用戶輸入的動態搜尋功能需要仔細考慮安全性。 一個常見的場景是使用 MySQL 的 LIKE 運算子搜尋包含部分符合的使用者名稱。 但是,直接將使用者輸入合併到準備好的語句中的 LIKE 子句中很容易出現 SQL 注入漏洞。

不正確的方法通常涉及嘗試在 LIKE 通配符中嵌入佔位符,例如 SELECT * FROM users WHERE username LIKE '%{?}%'。這是有缺陷的,因為資料庫驅動程式無法正確解釋佔位符語法。

安全實現的關鍵在於LIKE準備語句之前建立表達式。這可確保使用者輸入得到正確的清理並被視為數據,而不是可執行程式碼。 正確的方法是:

<code class="language-php">$searchParam = "%" . $yourParam . "%"; // Prepend and append wildcards
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY WHERE name LIKE ?");
$stmt->bind_param("s", $searchParam); // Bind the complete LIKE expression
$stmt->execute();</code>

在這個改進的範例中,% 通配符被加入到使用者提供的 $yourParam 中,以建立儲存在 LIKE 中的完整 $searchParam 模式。 然後使用帶有字串類型(“s”)的 bind_param 將這個完整的模式綁定到準備好的語句的佔位符。 這可以防止 SQL 注入,同時保持動態搜尋功能。 這種方法保證了準備好的語句所提供的安全性和效率。

以上是如何安全地使用 MySQL 的 LIKE '%{$var}%' 和預處理語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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