magic_quotes_gpc = On 及普遍使用 addslashes()/mysql_real_escape_string() 使傳統注入較難,但仍需警惕:
id=1 OR 1=1最佳防禦:預處理語句(Prepared Statements),參數化查詢徹底分離代碼與資料。
htmlspecialchars($str, ENT_QUOTES, 'UTF-8')。RSS 輸出範例:
<description><![CDATA[{$msginfo}]]></description>
若 $msginfo 含 ]]><script>alert(1)</script>,CDATA 結束標記被提前閉合,腳本注入執行。過濾僅針對 ]]> 不足,<title> 等欄位同樣危險。
對策:所有 XML 文字節點必須實體化(<→< 等),或使用 DOMDocument 建立 XML 確保正確跳脫。
PHP 底層漏洞可能繞過限制。範例:
error_log("<? phpinfo();?>", 3, "test.php"); // 正常寫入
error_log("<? phpinfo();?>", 3, "prefix://../../test.php"); // 利用流封裝協議繞過
對策:
disable_functions = error_log, exec, system, passthru, shell_exec, proc_open, popen。