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中文網其他相關文章!