前端安全是 Web 開發中至關重要的一環,以下是常見的前端安全問題及對應的防御措施:
1. XSS(跨站腳本攻擊)
攻擊原理
攻擊者向頁面注入惡意腳本(如 JavaScript),在用戶瀏覽器中執行,竊取 Cookie、會話信息或篡改頁面內容。
類型:
-
存儲型 XSS:惡意腳本存儲在服務器(如評論區)。
-
反射型 XSS:通過 URL 參數注入腳本。
-
DOM 型 XSS:直接操作 DOM 觸發漏洞。
防御措施:
-
輸入轉義:對用戶輸入的內容進行轉義(如?
<
?→?<
)。 -
Content Security Policy (CSP):通過 HTTP 頭限制腳本來源,禁止內聯腳本和未授權域。
Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com
-
使用安全的框架:如 React/Vue 自動轉義 HTML,避免直接操作?
innerHTML
。 -
設置 HttpOnly Cookie:防止 JavaScript 讀取敏感 Cookie。
2. CSRF(跨站請求偽造)
攻擊原理
誘導用戶訪問惡意頁面,利用已登錄的 Cookie 偽造用戶身份發起請求(如轉賬)。
防御措施:
-
CSRF Token:服務端生成隨機 Token 并驗證(如隱藏表單字段)。
-
SameSite Cookie 屬性:設置 Cookie 的?
SameSite=Strict
?或?Lax
,限制跨域攜帶。 -
驗證 Referer/Origin:檢查請求來源是否為合法域名。
-
關鍵操作二次驗證:如短信驗證碼、密碼確認。
3. 點擊劫持(Clickjacking)
攻擊原理
通過透明 iframe 覆蓋在正常頁面上,誘導用戶點擊隱藏按鈕(如授權操作)。
防御措施:
-
X-Frame-Options:通過 HTTP 頭禁止頁面被嵌入 iframe。
X-Frame-Options: DENY
-
CSP 的 frame-ancestors 指令:限制頁面嵌入的父級來源。
Content-Security-Policy: frame-ancestors 'self'
4. 不安全的第三方依賴
風險
第三方庫/插件可能包含漏洞或被篡改(如通過 CDN 加載惡意腳本)。
防御措施:
-
使用可信來源:從官方渠道獲取依賴。
-
子資源完整性(SRI):校驗 CDN 資源哈希值。
<script src="https://cdn.example.com/lib.js" integrity="sha384-xxxxx"> </script>
-
定期更新依賴:使用?
npm audit
?或工具(如 Snyk)掃描漏洞。
5. 不安全的本地存儲
風險
敏感數據(如 Token)存儲在?localStorage
?或?sessionStorage
?中,易被 XSS 竊取。
防御措施:
-
避免存儲敏感數據:優先使用?
HttpOnly Cookie
。 -
加密存儲數據:如需本地存儲,使用加密算法(如 AES)保護。
6. CORS 配置錯誤
風險
不當的跨域資源共享(CORS)配置導致數據泄露。
防御措施:
-
嚴格限制 Origin:僅允許可信域名訪問 API。
Access-Control-Allow-Origin: https://your-domain.com
-
避免通配符?
*
:除非必要,否則不開放全部域。
7. 輸入驗證不足
風險
未對用戶輸入進行驗證,導致 SQL 注入、命令注入等。
防御措施:
-
前后端雙重驗證:前端做基礎校驗(如格式、長度),后端做嚴格校驗。
-
使用參數化查詢:防止 SQL 注入(后端責任,但需前后端協作)。
防御核心原則
-
最小權限原則:僅授予必要權限(如 API 訪問、Cookie 范圍)。
-
縱深防御:多層級防護(前端 + 后端 + 基礎設施)。
-
保持更新:定期更新依賴和工具鏈。
-
安全審計:使用自動化工具(如 OWASP ZAP)掃描漏洞。
通過以上措施,可以顯著降低前端安全風險。始終記住:前端安全需要與后端、運維協同防護,單一層面的防御不足以應對復雜攻擊。