XSS

Cross-Site Scripting(跨站腳本攻擊)是一種常見的網路安全漏洞,它允許攻擊者將惡意腳本注入到網頁中,然後在使用者瀏覽器上執行。這種攻擊通常發生在帶有使用者交互功能的網頁上,例如表單、評論框、搜尋框等。

利用 XSS 漏洞可執行各種惡意操作:

  • 竊取使用者的會話 Cookie
  • 竊取敏感資訊
  • 篡改網頁內容
  • 重新導向使用者到惡意網站

攻擊類型

類型說明
Stored XSS存儲型:惡意腳本存入伺服器,影響所有瀏覽該頁面的使用者
Reflected XSS反射型:惡意腳本透過 URL 參數即時反射執行
DOM-based XSSDOM 型:在客戶端 JavaScript 中操作 DOM 時注入惡意腳本

防護措施

1. 輸入驗證

對於用戶輸入的數據進行嚴格的驗證,防止惡意輸入。

2. 輸出轉義

在將用戶輸入的數據輸出到 Web 頁面時,使用適當的轉義方法,如 HTML Entity Encoding,以防止腳本在瀏覽器上執行。

3. Content Security Policy (CSP)

設置安全的 HTTP Header,限制允許加載的資源,防止惡意腳本的執行。

Content-Security-Policy: default-src 'self'; script-src 'self'

4. 安全的 Cookie 設定

屬性說明用途
HttpOnly防止 JavaScript 訪問 Cookie避免 XSS 竊取 Session
Secure僅在 HTTPS 連接中傳輸防止中間人攻擊竊取
SameSite控制跨站請求行為防止 CSRF 攻擊

SameSite Cookie 設定

SameSite 屬性用於設置 Cookie 的跨站請求行為,以防止 CSRF(Cross-Site Request Forgery)攻擊。

行為適用場景
Strict禁止第三方站點訪問 Cookie,僅允許在同一站點內訪問銀行、購物網站等有金流交易的網站
Lax在 Redirect 到目標 URL 的 GET 請求中允許第三方訪問 Cookie,POST 請求則禁止一般網站預設值
None允許所有跨站請求訪問 Cookie,必須配合 Secure 使用需要跨站共享 Cookie 的場景(如 SSO)
當設置 SameSite=None 時,必須同時設置 Secure 屬性,否則 Cookie 將被瀏覽器拒絕。

Cookie 設定範例

Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Strict