XSS 主要分為三大類:
1.Reflected XSS(反射型):惡意程式碼藏在URL或請求中,伺服器接收後立刻「反射」回傳給瀏覽器執行。
2.Stored XSS(儲存型):惡意程式碼被存入資料庫,每個造訪該頁面的使用者都會受害。
3.DOM-based XSS:完全在前端JavaScript處理DOM物件時發生的漏洞。
1.正常功能測試
輸入:Alice
結果:頁面顯示Hello Alice。
2.構造XSS攻擊
輸入:alert('XSS')
結果:瀏覽器立刻跳出顯示XSS的警告彈窗。並且點擊彈窗上的「確定」後,頁面留下紅色的Hello,代表 標籤已被瀏覽器成功解析並執行。

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
echo 'Hello ' . $_GET[ 'name' ] . '';
}
程式碼直接將傳入的name參數拼接到HTML中輸出,完全沒有呼叫如htmlspecialchars() 等轉義函式。因此輸入的 標籤會原封不動地送回前端,被瀏覽器誤以為是正常的HTML程式碼而執行。
2.使用HTTP-only Cookie:
將敏感的Session Cookie設定為HttpOnly,防止攻擊者透過document.cookie竊取Cookie。
3.實施內容安全策略:
透過HTTP Header限制網頁可以執行的腳本來源,禁止執行未授權的內聯腳本。