天天看點

伺服器端修改referer,CSRF繞過後端Referer校驗

CSRF繞過後端Referer校驗分正常情況和不正常的情況,我們這裡主要讨論開發在寫校驗referer程式時,不正常的情況下怎麼進行繞過。

正常情況

正常的情況指伺服器端校驗Referer的代碼沒毛病,那麼意味着前端是無法繞過的。

我之前考慮過的方案:

JS修改Referer,失敗;

讓使用者點選第三方網站,但是浏覽器就是使用第三方網站的referer,失敗;

不正常的情況

不正常的情況指伺服器端校驗Referer的代碼有漏洞,前端才能做到繞過,下面介紹幾個可能會繞過Referer的案例;

添加無Referer标簽

可以嘗試無Referer标簽,萬一邏輯剛好沒判斷無Referer的情況呢;

history.pushState('', '', '/')

Web站點路徑帶着referer字段名

原理就是在惡意網站的通路路徑上建立成包含原本referer中有的字段名,如果服務端的校驗規則隻是判斷是否包含,那就666了;

伺服器端修改referer,CSRF繞過後端Referer校驗

GET型CSRF

檢驗了HTTP Referer就一點問題都沒有了嗎?答案是:否定的,HTTP Referer隻能檢查點選的連結來源是來自站内還是站外,如果是GET方式的CSRF,那連結本身就是站内的,也就意味着檢驗HTTP Referer是無效的。

原文出處:https://www.cnblogs.com/mysticbinary/p/12161537.html