magic_quotes_gpc 是 PHP 早期(< 5.4)為防 SQL 注入自動對 $_GET/POST/COOKIE 添加反斜槓轉義的功能。已於 PHP 5.4 移除,現代代碼不應依賴它。
It\'s)。stripslashes() 後,在關閉 magic_quotes 的環境誤刪正常反斜槓(如 Windows 路徑 C:\path)。magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
php_flag magic_quotes_gpc Off
// 入口文件最早處執行
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
$strip = function ($v) use (&$strip) {
return is_array($v) ? array_map($strip, $v) : stripslashes($v);
};
$_GET = array_map($strip, $_GET);
$_POST = array_map($strip, $_POST);
$_COOKIE = array_map($strip, $_COOKIE);
$_REQUEST= array_map($strip, $_REQUEST);
}
原理:遞歸處理多維數組,僅在 magic_quotes 開啟時執行,PHP 5.4+ get_magic_quotes_gpc 恒返回 false,代碼自動失效,零侵入。
htmlspecialchars($str, ENT_QUOTES, 'UTF-8'),JS 上下文用 json_encode(),URL 用 urlencode()。Magic Quotes 是設計失誤,已被棄用移除。現代代碼應在入口統一清洗歷史殘留,核心防護靠預處理語句與上下文輸出編碼。