HTTPS 中常見攻擊與防御策略涵蓋中間人攻擊(MITM)、SSL剝離、重放攻擊等,幫助構建安全的 HTTPS 通信環境:
一、中間人攻擊(MITM)
攻擊原理
場景:攻擊者通過偽造證書或劫持網絡流量,偽裝成合法服務器與客戶端通信。
典型手段:
ARP欺騙:在局域網內偽造 MAC 地址,截獲流量。
DNS劫持:篡改 DNS 解析結果,將用戶導向惡意服務器。
偽造證書:攻擊者自簽名證書冒充目標網站。
風險場景
公共 WiFi 下訪問 HTTP 網站。
未啟用 HSTS 的 HTTPS 網站。
證書頒發機構(CA)被攻破或私鑰泄露。
防御策略
強制 HTTPS(HSTS):
通過 Strict-Transport-Security 頭部強制瀏覽器使用 HTTPS,防止降級攻擊。
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;
證書綁定(證書透明度):
使用 Certificate Transparency(CT)監控證書頒發,防止惡意 CA 簽發假證書。
證書固定(Certificate Pinning):
在客戶端固定信任的證書公鑰,拒絕非預期的證書(適用于移動端 App)。
定期更新證書:
縮短證書有效期,減少私鑰泄露風險。
二、SSL剝離(SSL Stripping)
攻擊原理
攻擊者將 HTTPS 連接降級為 HTTP,竊聽明文傳輸的敏感數據(如密碼、Cookie)。
典型場景:用戶訪問 HTTP 版本的網站,攻擊者通過中間人劫持流量并移除 SSL 加密。
風險場景
網站同時支持 HTTP 和 HTTPS,且未強制跳轉。
未啟用 HSTS 的網站。
防御策略
強制 HTTPS 跳轉:
服務器配置 HTTP 自動重定向到 HTTPS。
server {
listen 80;
server_name example.com;
return 301 https://hostrequest_uri;
啟用 HSTS:
瀏覽器收到 HSTS 頭部后,拒絕后續 HTTP 請求。
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”;
禁用舊版協議:
確保服務器不支持 SSLv3 等易受攻擊的協議。
三、重放攻擊(Replay Attack)
攻擊原理
攻擊者截獲合法請求并重復發送,冒充用戶執行操作(如重復提交訂單)。
典型場景:未使用隨機數(Nonce)或時間戳的 API 請求。
風險場景
無防重放機制的 API 接口。
使用固定 Session ID 或 Token 的認證系統。
防御策略
隨機數(Nonce):
每個請求附帶唯一隨機數,服務器校驗其是否已使用。
GET /api/data?nonce=abc123×tamp=1620000000
時間戳(Timestamp):
請求中加入時間戳,服務器拒絕超過時間窗口(如 ±5 分鐘)的請求。
序列號(Sequence Number):
為每個請求分配遞增序號,拒絕序號重復或過期的請求。
HTTPS 加密:
使用 TLS 的 MAC(消息認證碼)確保數據完整性,防止篡改。
四、其他常見攻擊與防御
重定向攻擊(Pharming)
攻擊:偽造網站域名或 DNS 解析,誘導用戶訪問虛假站點。
防御:
配置正確的 DNSSEC(DNS 安全擴展)。
使用 EV SSL 證書(擴展驗證),瀏覽器地址欄顯示綠色企業名稱。
Heartbleed 漏洞(OpenSSL 漏洞)
攻擊:通過 OpenSSL 心跳擴展漏洞竊取服務器內存數據(如私鑰)。
防御:
升級 OpenSSL 至 1.1.1 或更高版本。
定期重啟服務以清除內存殘留數據。
CRIME/BEAST 攻擊
攻擊:利用 TLS 壓縮或 CBC 模式漏洞竊取會話 Cookie。
防御:
禁用 TLS 壓縮(如 sslcompression off;)。
優先使用 AEAD 加密套件(如 AES-GCM)。
五、綜合防御方案
協議與加密套件優化:
禁用 SSLv3/TLS 1.0/1.1,僅啟用 TLS 1.2+。
使用強加密套件(如 ECDHE-ECDSA-AES128-GCM-SHA256)。
證書管理:
使用 Let’s Encrypt 自動化證書簽發與續期。
配置 OCSP Stapling 減少證書驗證延遲。
監控與審計:
使用 SSL Labs 測試工具定期掃描配置漏洞。
部署 WAF(Web 應用防火墻)攔截異常請求。
六、工具與實戰驗證
檢測中間人攻擊:
openssl s_client -connect example.com:443 -showcerts
檢查證書鏈是否完整,是否被篡改。
模擬 SSL 剝離:
使用工具(如 sslstrip)測試網站是否易受降級攻擊。
重放攻擊測試:
使用 Postman 或 Python 腳本重復發送相同請求,觀察服務器是否拒絕。
總結
HTTPS 的安全性依賴于協議設計、證書管理、加密算法三者的協同:
中間人攻擊:通過 HSTS、證書綁定和定期更新防御。
SSL剝離:強制 HTTPS + HSTS 組合拳。
重放攻擊:Nonce、時間戳與序列號機制。
最終目標:構建端到端加密、抗篡改、抗重放的 HTTPS 通信環境,保障用戶數據安全與業務連續性。