文章

防範網站 XSS 與 CSRF 攻擊:工程師必備的安全守則

返回
資安實務顯示,XSS 與 CSRF 為網站最常見的入侵方式。XSS 藉由插入惡意程式碼竊取資料,需透過輸出轉碼、CSP 政策及輸入檢查來阻斷;CSRF 則假借已登入身分發出偽造指令,應以 Token 驗證及來源標頭檢查加以防範。現今框架多已內建防護,重點在於開發者是否刻意繞過這些機制,例如直接輸出原始 HTML 或省略 Token 驗證。

日常比喻:網站面臨的兩種入侵風險

可將網站想像成住家大門,存在兩種常見破壞方式。一種是複製鑰匙直接進入屋內搜刮(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 則破壞伺服器對已驗證使用者的信任。善用框架機制並補強不足處,才能建立穩固防線。安全性應於設計初期即納入考量。

WhatsApp
Chatbot Icon ANGLIA AI Chatbot
×
For more efficient responses, please shorten your question