首頁 > 資料庫 > mysql教程 > `mysql_real_escape_string()` 是針對所有字元編碼中的 SQL 注入的可靠防禦嗎?

`mysql_real_escape_string()` 是針對所有字元編碼中的 SQL 注入的可靠防禦嗎?

Mary-Kate Olsen
發布: 2024-12-01 03:21:17
原創
154 人瀏覽過

Is `mysql_real_escape_string()` a Reliable Defense Against SQL Injection in All Character Encodings?

mysql_real_escape_string() 是抵禦 SQL 注入的堅不可摧的盾牌嗎?

justinshattuck.com 上的一個部分錶明 mysql_real_escape_string() 在某些情況下容易出錯亞洲字元編碼。具體來說,它聲稱編碼繞過 mysql_real_escape_string() 使用 BIG5 或 GBK 將危險字元偷運到查詢中。

這個漏洞是真的嗎?

根據 Stefan Esser,答案是令人不安的「是」。他聲稱當使用 SET NAMES 時 mysql_real_escape_string() 會出現問題。此方法切換編碼以滿足應用程式的需要,而無需通知 mysql_real_escape_string()。因此,如果多位元組編碼允許反斜線作為第二個、第三個或第四個位元組,則會出現問題。 Mysql_real_escape_string() 仍然沒有註意到這種不規則性,並且無法正確轉義字元。

保護您的網站

Esser 建議 UTF-8 仍然是安全的編碼,但 UTF -8 並不總是選項。不幸的是,更安全的替代方案 mysql_set_charset 僅在最近的 PHP 版本中可用。

以上是`mysql_real_escape_string()` 是針對所有字元編碼中的 SQL 注入的可靠防禦嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板