關於 CSRF漏洞

CSRF簡介

  • CSRF(Cross-site request forgery 跨站請求僞造)又稱是 XSRF, 也被稱爲 "One Click Attack"或 “Session Riding”, 此漏洞是利用了網站對用戶的瀏覽器信任

攻擊細節

  • 當用戶打開某網站且登錄後瀏覽器會與網站產生一個會話, 用戶可以利用自己的賬號權限對網站進行一系列操作 如 訂單創建, 支付, 取消, 修改信息 等, 攻擊者可以預先寫好相關請求代碼 如 簡單超鏈接形式或 form表單 等, 通過誘騙用戶點擊或提交, 此時如果會話未過期, 用戶便以自己的身份執行了一個非本意的操作, 對網站服務器來講這個請求是完全合法的, 這樣完成一次 CSRF攻擊, 可以看出 CSRF攻擊是建立在瀏覽器與 WEB服務器的會話之中的

CSRF漏洞檢測

  • 一般使用檢測工具掃描 CSRF漏洞, 在通過工具生成攻擊代碼, 以此嘗試 CSRF攻擊, 常見的漏洞掃描工具有 AppScan, NetSpark, AWVS, CSRF Request Builder, CSRFTester 等, 攻擊代碼可以通過 BurpSuite或 CSRFTester工具來生成

CSRF防禦方案

  1. 驗證 HTTP協議的請求頭中的 Referer值, 它記錄了 HTTP請求的來源地址, 在通常情況該地址是同一個網站地址, 而大部分 CSRF攻擊是在其它網站發起的所以 Referer地址也是發起方地址, 所以可以做判斷同一個地址請求通過否則拒絕, 或需要允許其它發起地址可以做白名單. 不過事實上, 一些瀏覽器黑客可以篡改 Referer值, 所以這種方法仍然有問題, 還有有些用戶認爲這樣會侵犯到自己的隱私權, 因此, 會在瀏覽器設置請求時不再提供 Referer值, 導致即使正常訪問服務器也會認爲是 CSRF攻擊, 且拒絕訪問

  2. CSRF漏洞是攻擊者利用用戶存在 Cookie的驗證信息來通過安全驗證的, 所以我們防禦時可以在參數中加入一個隨機產生的 token存放於 Session中, 且不存於 Cookie中, 讓黑客無法僞造參數, 然後請求時在服務器首先會比對 token是否正確, 如果 token不正確就把此次請求視爲 CSRF攻擊, 並拒絕該請求. 此種方式比較繁瑣, 因爲每次請求都需要加 token參數到請求地址中或表單中

  3. HTTP 請求頭中添加自定義屬性的方法來防禦 CSRF攻擊, 瀏覽器會阻止向外站發送自定義的請求頭, 但是允許向本站通過 XMLHttpRequest的方式發送自定義請求頭, 所以網站內所有的請求裏使用 XMLHttpRequest類並附加一個自定義請求頭 X-Requested-By, 可以把方式[2]的 token值統一放到此屬性中傳輸驗證, 在每次請求時如果沒有自定義頭會認爲是 CSRF攻擊, 且拒絕訪問

如果您覺得有幫助,歡迎點贊哦 ~ 謝謝!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章