0x01 Referer为空的情况

解决方案:

利用ftp://,http://,https://,file://,javascript:,data:这个时候浏览器地址栏是file://开头的,如果这个HTML页面向任何http站点提交请求的话,这些请求的Referer都是空的。

例如利用data协议:

<html>
    <body>
       <iframe src="data:text/html;base64,PGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPWh0dHA6Ly9hLmIuY29tL2Q+PGlucHV0IHR5cGU9dGV4dCBuYW1lPSdpZCcgdmFsdWU9JzEyMycvPjwvZm9ybT48c2NyaXB0PmRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOzwvc2NyaXB0Pg==">
    </body> 
</html>

利用https协议(https向http跳转的时候Referer为空)

<iframe src="https://xxxxx.xxxxx/attack.php">

0x02 判断Referer是某域情况下绕过

比如你找的csrf是xxx.com 验证的referer是验证的*.xx.com 可以找个二级域名 之后<img "csrf地址"> 之后在把文章地址发出去 就可以伪造。

0x03 判断Referer是否存在某关键词

Referer判断存在不存在google.com这个关键词
在网站新建一个google.com目录 把CSRF存放在google.com目录,即可绕过

0x04 判断referer是否有某域名

判断了Referer开头是否以126.com以及126子域名 不验证根域名为126.com 那么我这里可以构造子域名x.126.com.xxx.com作为蠕虫传播的载体服务器,即可绕过。

转载自Sanr博客,链接为http://0x007.blog.51cto.com/6330498/1610946