日常比喻:網站面臨的兩種入侵風險
可將網站想像成住家大門,存在兩種常見破壞方式。一種是複製鑰匙直接進入屋內搜刮(XSS),另一種則是冒充屋主指示更換門鎖(CSRF)。這兩類手法長期位居 OWASP 風險排行前列,缺乏防護等同敞開大門。
先前曾有製造業客戶因 XSS 導致管理權限外洩,首頁遭置換為不當廣告,搜尋排名因此消失,歷時數月才恢復正常。掌握基本資安概念是網站經營者的必要課題。
XSS 跨站腳本攻擊詳解
XSS 指攻擊者將惡意 JavaScript 植入頁面,使用者瀏覽時即會執行該程式碼,進而竊取 Cookie 或 Session 資訊。主要分為三類:
- 反射型:惡意參數藏於網址,伺服器直接回傳。
- 儲存型:惡意碼永久存於資料庫,所有訪客皆受影響。
- DOM 型:純前端操作 DOM,伺服器較難偵測。
CSRF 跨站請求偽造說明
CSRF 利用已登入狀態,讓瀏覽器自動附帶 Cookie,向目標發送未經同意的請求。例如在已登入銀行頁面時,另一惡意頁面暗中送出轉帳指令,伺服器誤判為本人操作。
XSS 防護要點
輸出編碼
輸出使用者內容前將特殊字元轉為 HTML 實體,是最基礎的保護。現代模板引擎預設即執行此編碼。
內容安全政策
CSP 標頭可限制腳本來源,避免非白名單程式碼執行,切勿啟用 unsafe-inline 與 unsafe-eval。
輸入驗證與清理
採用白名單驗證所有輸入;如需富文本,則使用經過審核的清理工具。
Cookie 安全設定
啟用 HttpOnly 與 Secure 旗標,防止 JavaScript 讀取 Session。
CSRF 防護要點
Token 機制
表單內嵌入隨機 Token,提交時驗證一致性即可阻擋偽造請求。
SameSite 屬性
設定 Lax 或 Strict 可限制跨站攜帶 Cookie。
來源標頭檢查
驗證 Referer 與 Origin 作為額外防線。
框架內建保護
主流框架已提供自動編碼、Token 管理及 Cookie 安全設定,開發者仍需避免使用未編碼輸出,並確保 API 端點也有妥善保護。
定期檢核項目
XSS 檢查:輸出編碼、CSP 設定、Cookie 旗標、富文本清理、前端避免直接插入原始內容。CSRF 檢查:表單含 Token、AJAX 傳送 Token、Cookie SameSite、重要操作額外確認。
結語:資安需持續投入
XSS 破壞使用者對網站的信任,CSRF 則破壞伺服器對已驗證使用者的信任。善用框架機制並補強不足處,才能建立穩固防線。安全性應於設計初期即納入考量。