首頁 >後端開發 >php教程 >`mysql_real_escape_string()` 真的安全嗎:亞洲字元編碼可以繞過它的保護嗎?

`mysql_real_escape_string()` 真的安全嗎:亞洲字元編碼可以繞過它的保護嗎?

Susan Sarandon
Susan Sarandon原創
2024-10-26 18:17:02893瀏覽

Is `mysql_real_escape_string()` Truly Safe: Can Asian Character Encodings Bypass its Protection?

mysql_real_escape_string() 是否能夠完全防範 SQL 注入?

最近流傳的一項聲明稱,某些亞洲字元編碼可以繞過 mysql_real_escape_string() ,特別是 Big5 和 GBK。這個斷言是否有效?如果有效,如何在不訴諸準備好的語句的情況下保護您的網站?

漏洞

根據 Stefan Esser,mysql_real_escape_string()使用 SET NAMES 指令時確實存在漏洞。此指令會改變字元編碼,使 mysql_real_escape_string() 忽略某些使用反斜線作為附加位元組的多位元組編碼。這種不正確的轉義可能會危及您網站的安全。

安全措施

雖然 UTF-8 編碼不易受到此漏洞的影響,但必須使用 mysql_set_charset 來安全地更改編碼。但是,此功能僅在較新的 PHP 版本中可用。如果您無法使用準備好的語句或 mysql_set_charset,您可能需要探索替代方法來保護您的網站免受 SQL 注入攻擊。

以上是`mysql_real_escape_string()` 真的安全嗎:亞洲字元編碼可以繞過它的保護嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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