XSS
黑客往網頁裏注入惡意腳本代碼,當用戶訪問時獲取到包含惡意代碼的網頁。通過惡意腳本,黑客可以獲取和控制用戶信息。
反射型XSS(非持久型)
誘導用戶點擊惡意鏈接來造成一次性攻擊。
黑客把帶有惡意腳本代碼參數的URL地址發送給用戶,用戶點擊此鏈接,服務端獲取請求參數並且直接使用,服務器發射回結果界面。
- 反射型XSS攻擊是一次性的,必須通過用戶點擊鏈接才能發起。
- 一些瀏覽器如Chrome,內置了一些XSS過濾器,可以防止大部分反射型XSS攻擊。
- 反射型XSS其實就是服務器沒有對惡意的用戶輸入進行安全處理就直接反射響應內容,導致惡意代碼在瀏覽器中執行的一種XSS漏洞。
存儲型XSS(持久型)
黑客將代碼存儲到漏洞服務器中,用戶瀏覽相關頁面發起攻擊。
黑客將惡意腳本代碼上傳或存儲到漏洞服務器,服務器會把惡意腳本保存。當正常客戶訪問服務器時,服務器會讀取惡意數據並直接使用。
存儲型XSS危害更大。
基於DOM的XSS
在web資源傳輸過程中或用戶使用頁面過程中修改頁面數據。如網絡劫持、WiFi路由劫持、本地惡意軟件等。
payload
實現XSS攻擊的惡意腳本被稱爲XSS payload。
危害:
1、竊取用戶的cookie document.cookie
2、識別用戶瀏覽器 navigator.userAgent
3、僞造請求get post
4、XSS釣魚,通過XSS向網頁注入釣魚鏈接,讓用戶訪問假冒的網站。
XSS防禦
- 給cookie設置httpOnly屬性,腳本無法讀取該cookie,自己也不能使用。
- 服務器端過濾
- URL編碼 encodeURI encodeURIComponent
- HTML編碼 如 < >
- JS 轉義 特殊字符
- 輸入檢查
- 驗證碼
CSRF 跨站請求僞造
用戶A登錄銀行網站,登錄後會設置cookie。黑客誘導用戶A登錄到黑客的站點,然後返回一個頁面。用戶訪問這個頁面時,這個頁面會僞造一個轉賬請求到銀行網站。
利用用戶的登錄態和服務器漏洞,通過第三方站點來做一些壞事。
攻擊方式
- 自動發起get請求
- 自動發起post請求
- 引誘用戶點擊鏈接
CSRF 攻擊的三個必要條件
1、目標站點一定有CSRF漏洞。
2、用戶登錄過目標站點,並在瀏覽器上保持該站點的登錄態。
3、需用戶打開一個第三方站點。
防禦
- 驗證碼,二次密碼校驗
- 跨站請求使用refer驗證、origin屬性驗證 不可靠 因爲refer可僞造
- token — 目前最主流的CSRF防禦。
- 利用好cookie的samesite屬性
DDOS攻擊
分佈式拒絕服務攻擊
黑客控制大量的肉雞向受害主機發送正常請求,導致目標主機資源耗盡不能爲合法用戶提供服務。
防禦
- 驗證碼
- 限制每個客戶端請求頻率。
- 增加機器、增加服務帶寬
- 設置分佈式服務,防止單點失效
- 使用主流雲系統和CDN
- 優化資源使用提高web server的負載能力
安全防護原則
- 不輕信任何數據(用戶輸入,後臺返回)
- 慎用公共CDN資源
- 慎用第三方服務JSONP接口
- 轉義 (HTML、JS、富文本輸入)
- 配置安全協議頭
- 使用HTTPS