XSS跨站腳本攻擊:如何檢測和防禦

2026-07-210 阅读
网站安全防护
XSS跨站腳本攻擊:如何檢測和防禦

你網站的評論區裡,有人留了一條看似正常的留言。但下一個用戶打開這個頁面的時候,他的Cookie已經被悄悄發到攻擊者的伺服器上了。這就是XSS,跨站腳本攻擊。

XSS的三種姿势

反射型最常見,攻擊者構造一個惡意鏈接,用戶點擊後腳本在URL參數裡被執行。存儲型危害最大,惡意腳本被存進數據庫,每個訪問該頁面的用戶都會中招,評論區、個人資料這些地方是重災區。DOM型純前端操作,不經過伺服器,頁面JS代碼直接把攻擊者控制的數據插進了DOM。

判斷你的網站有沒有XSS漏洞,最簡單的方法:在任意輸入框裡輸入 <script>alert(1)</script>,提交後如果頁面彈出對話框,恭喜你,漏洞确實存在。

防禦要從輸出端下手

XSS的本質是用戶輸入的數據被當成代碼執行了。防禦的核心原則就一條:永遠不要信任用戶輸入,在數據輸出到頁面時做轉義。

HTML上下文的轉義。數據要插入HTML标簽之間時,把 < > & " ' 這五個字符轉義成HTML實體。主流框架都自帶轉義功能,Vue的雙花括號、React的JSX默認就是轉義的。别手動關閉這個特性。

設置CSP頭。Content-Security-Policy響應頭能限制頁面隻加載指定來源的腳本,相當于給XSS攻擊上了第二道鎖。配置時把default-src設為self,script-src隻允許可信域名。這個設置不複雜,但防護效果顯著。

Cookie加上HttpOnly。給敏感Cookie設置HttpOnly标記,JavaScript就讀不到它了。即使頁面被注入了腳本,攻擊者也拿不到用戶的會話Token。這一個配置就能擋掉大量XSS攻擊的後果。

定期檢測别偷懶

用OWASP ZAP或Burp Suite對網站做定期掃描,這兩個工具能自動檢測常見XSS漏洞。重點掃描所有有用戶輸入的頁面:搜索框、評論區、個人資料編輯、留言闆。發現漏洞及時修,别拖。

另外建立一個内部規範:所有新功能上線前必須過安全掃描。開發階段就用ESLint的安全插件做靜态檢查,能攔掉不少低級問題。網站安全防護不是一次性的活,XSS新的變種一直在出現,防禦策略也要跟着更新。