addslashes()
與 mysql_real_escape_string()
預防 SQL 注入
雖然經常被吹捧為 addslashes()
的更安全替代方案,但 mysql_real_escape_string()
仍然是防止 PHP 應用程式中 SQL 注入漏洞的推薦方法。了解 addslashes()
的限制是建立強大安全性的關鍵。
想想:依賴 addslashes()
進行使用者輸入清理的 SQL 查詢遇到包含單引號 (') 的字串。 addslashes()
可能會錯誤地將此引號識別為多位元組字元的一部分,從而使查詢容易受到注入。
攻擊者可以透過附加連字號 (-) 或類似的字元來終止某些 Unicode 編碼(如 ISO-8859-1,但不是 UTF-8)中的多位元組序列,從而利用此漏洞。這會欺騙 addslashes()
將單引號視為有效多位元組字元的一部分,繞過轉義機制並允許惡意程式碼執行。
該漏洞是特定於編碼的。 UTF-8 是一種廣泛使用的 Unicode 編碼,通常不會受到這種特定攻擊,因為它不使用相同的多位元組終止字元。
為了獲得最佳的 SQL 注入保護,請務必將 mysql_real_escape_string()
優先於 addslashes()
。 透過應用程式級輸入驗證和使用準備好的語句進行資料庫互動來補充這一點。 透過承認 addslashes()
的弱點並實施這些最佳實踐,開發人員可以顯著降低 SQL 注入攻擊的風險。
以上是`addslashes()` 真的可以防止 SQL 注入嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!