一、常見Web攻擊方式
1. 跨站腳本攻擊(XSS)
攻擊原理:攻擊者向網頁注入惡意腳本,在用戶瀏覽器執行
-
存儲型XSS:惡意腳本存儲在服務器(如評論區)
-
反射型XSS:惡意腳本通過URL參數反射給用戶
-
DOM型XSS:前端JavaScript不安全地操作DOM
2. 跨站請求偽造(CSRF)
攻擊原理:誘騙用戶在已認證的網站上執行非預期操作
-
利用用戶的登錄狀態
-
通過惡意鏈接/圖片發起請求
3. SQL注入
攻擊原理:通過輸入數據插入或"注入"惡意SQL命令
-
攻擊者可以查看、修改、刪除數據庫內容
-
常見于未過濾的用戶輸入拼接SQL語句
4. 點擊劫持(Clickjacking)
攻擊原理:誘使用戶點擊隱藏的惡意元素
-
使用透明iframe覆蓋合法頁面
-
用戶看似點擊安全內容,實則觸發惡意操作
5. 文件上傳漏洞
攻擊原理:上傳惡意文件到服務器
-
上傳可執行腳本獲取服務器權限
-
上傳超大文件導致DoS(Denial of Service(拒絕服務))
6. 分布式拒絕服務(DDoS)
攻擊原理:用大量請求淹沒服務器資源
-
消耗帶寬、CPU或內存資源
-
使合法用戶無法訪問服務
7. 中間人攻擊(MITM)
攻擊原理:攔截通信雙方的流量
-
公共WiFi常見風險
-
竊取敏感信息如登錄憑證
二、防御措施
1. XSS防御
-
輸入過濾:對用戶輸入進行轉義和驗證
function escapeHtml(str) {return str.replace(/[&<>'"]/g, tag => ({'&': '&','<': '<','>': '>',"'": ''','"': '"'}[tag]));
}
-
輸出編碼:根據輸出上下文(HTML/JS/URL)進行編碼
-
Content Security Policy (CSP):限制腳本來源
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
HttpOnly Cookie:防止JavaScript訪問敏感Cookie
//http
Set-Cookie: sessionid=xxxx; HttpOnly; Secure
2. CSRF防御
-
CSRF Token:表單中包含服務器驗證的令牌
<input type="hidden" name="_csrf" value="隨機令牌">
SameSite Cookie屬性:
//http
Set-Cookie: sessionid=xxxx; SameSite=Strict
-
驗證Referer/Origin頭:檢查請求來源
-
關鍵操作二次驗證:如短信/郵件確認
3. SQL注入防御
-
參數化查詢/預處理語句:
// 正確方式
db.query('SELECT * FROM users WHERE id = ?', [userId]);// 錯誤方式(易受攻擊)
db.query(`SELECT * FROM users WHERE id = ${userId}`);
-
ORM框架:使用Sequelize、TypeORM等
-
最小權限原則:數據庫用戶僅賦予必要權限
-
輸入驗證:白名單驗證輸入格式
4. 點擊劫持防御
-
X-Frame-Options頭:
//http
X-Frame-Options: DENY
CSP的frame-ancestors指令:?
//http
Content-Security-Policy: frame-ancestors 'none'
?JavaScript防御(后備方案):
if (top !== self) top.location = self.location;
?
5. 文件上傳防御
-
文件類型驗證:檢查MIME類型和擴展名
-
文件內容掃描:檢查實際內容而非僅擴展名
-
重命名文件:使用隨機生成的文件名
-
隔離存儲:上傳目錄不解析腳本
-
大小限制:防止超大文件攻擊
6. DDoS防御
-
CDN服務:分散流量壓力
-
速率限制(Rate Limiting):
// Express中間件示例
const rateLimit = require('express-rate-limit');
app.use(rateLimit({ windowMs: 15*60*1000, max: 100 }));
?
-
Web應用防火墻(WAF):過濾惡意流量
-
云防護服務:如Cloudflare、AWS Shield
7. 中間人攻擊防御
-
HTTPS強制:HSTS頭
//http
Strict-Transport-Security: max-age=31536000; includeSubDomains
-
證書釘扎(HPKP):固定可信證書
-
敏感操作二次驗證:即使會話被劫持
三、綜合安全建議
通過組合這些措施,可以顯著提高Web應用的安全性,但需注意安全是一個持續過程而非一次性任務。
-
保持更新:定期更新框架、庫和服務器軟件
-
最小權限原則:所有服務使用最低必要權限運行
-
深度防御:多層安全措施而非依賴單一防護
-
安全頭設置:
//http X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block
-
日志監控:記錄并分析異常訪問模式
-
定期滲透測試:主動發現漏洞
-
安全意識培訓:防范社會工程學攻擊
?
?
?