轉義MySQL 通配符:綜合指南
在MySQL 環境中處理不可信的使用者輸入時,將特殊字元轉義為至關重要防止SQL注入攻擊。 PHP 函數 mysql_real_escape_string 通常用於此目的。但是,它不會轉義 MySQL 通配符“%”和“_”。
為了解決這個問題,一些使用者訴諸使用 addcslashes 來手動轉義這些通配符。然而,這種方法可能會導致意外的結果,如提供的範例所示:
Input: test_test " ' Database: test\_test " '
這裡,下劃線(“_”)使用前面的反斜線進行轉義,與單引號( “'”)不同) 和雙引號(""")。這種行為可能會令人困惑,因為所有這些字符都是使用反斜杠字符轉義的。
理解這種現象需要深入研究MySQL 的通配符轉義機制在一般MySQL 使用中不被視為通配符,並且在建構普通字串文字時不應被轉義。中成為特殊字元要準備在LIKE 語句中使用的字串,即使在使用參數化時也必須執行LIKE 轉義。 >
LIKE 轉義:_ 和% 是特殊的,必須轉義,轉義字元() 也必須是轉義的。義:
之後與轉義一樣,使用mysql_real_escape_string(對於MySQL)或其他資料庫的適當函數執行純字串轉義。出現問題,特別是如果您使用PHP 的字串文字,如範例所示。並使用LIKE ... ESCAPE ... 構造指定自訂轉義字元:以上是如何轉義 MySQL 通配符以實作安全 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!