V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jiangzhuo
V2EX  ›  问与答

检验 Referer 的作用是什么?

  •  
  •   jiangzhuo · 2017-02-23 14:08:30 +08:00 · 4516 次点击
    这是一个创建于 2828 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面这样的请求几天之前是正常的 今天访问了一下被 403 了

    curl -X GET -H "Referer: http://a.danmaku.cn" "http://www.acfun.cn/" --head
    HTTP/1.1 403 Forbidden
    Server: Tengine
    Date: Thu, 23 Feb 2017 05:56:50 GMT
    Content-Type: text/html
    Content-Length: 161
    Connection: keep-alive
    X-Tengine-Error: denied by Referer ACL
    Via: kunlun1.cn36[,403003]
    Timing-Allow-Origin: *
    EagleId: 3c1ce20114878294106198259e
    

    A 站这里检查 referer 的作用是什么呢? 如果是 CSRF 攻击可以伪造 Referer ,并且这是请求的还是首页。 人家没开发过什么网站,更对网站安全没啥研究。

    13 条回复    2017-02-23 21:06:03 +08:00
    luckyduck
        1
    luckyduck  
       2017-02-23 15:35:24 +08:00
    一般用来防止图片盗链
    jiangzhuo
        2
    jiangzhuo  
    OP
       2017-02-23 15:37:31 +08:00
    @luckyduck 但是我请求的是 A 站首页,没有防盗链的需求。防盗链应该是在 CDN 上配的
    shiny
        3
    shiny  
       2017-02-23 15:37:57 +08:00
    如果把 A 站资源嵌入自己网站供访问者使用,无法篡改访客的 Referer 。
    jiangzhuo
        4
    jiangzhuo  
    OP
       2017-02-23 15:49:28 +08:00
    @shiny 但是嵌个首页链接也。。。。。。
    很好奇一开始 A 站没做 referer 处理,是这两天根据 Access log 分析出什么来加上的?
    crab
        5
    crab  
       2017-02-23 15:54:53 +08:00
    @jiangzhuo 怎么可能首页。浏览器第一次打开如果是首页,那也没 referer
    jiangzhuo
        6
    jiangzhuo  
    OP
       2017-02-23 16:01:03 +08:00
    @crab 是一个<a>标签,点击链接跳转
    ```
    <!DOCTYPE html>
    <html>
    <head></head>
    <body><a href="http://www.acfun.cn" rel="noreferrer" id="autoclick"></a>
    <script>document.getElementById('autoclick').click();</script>
    </body>
    </html>
    ```
    http://a.danmaku.cn
    lslqtz
        7
    lslqtz  
       2017-02-23 17:17:52 +08:00 via iPhone
    @shiny 但是可以不发送 referer
    shiny
        8
    shiny  
       2017-02-23 17:30:54 +08:00
    @lslqtz 记得好像是 A 链接可以控制不发送,而且不是所有浏览器都支持?
    changwei
        9
    changwei  
       2017-02-23 17:50:19 +08:00 via Android
    js 无法修改通过 html 标签的 src 或者 xmlhttprequest 发出去的请求的 referer ,校验这个值可以简单的防御 csrf 攻击。
    weyou
        10
    weyou  
       2017-02-23 19:20:41 +08:00 via Android
    如果被攻击者使用的是正常的浏览器, csrf 攻击真的改不了 referer
    lslqtz
        11
    lslqtz  
       2017-02-23 21:01:11 +08:00 via iPhone
    @shiny 兼容性的确是问题
    @changwei
    meta 有标签可以改全部的
    lslqtz
        12
    lslqtz  
       2017-02-23 21:01:27 +08:00 via iPhone
    改 -> 隐藏
    Goheing
        13
    Goheing  
       2017-02-23 21:06:03 +08:00
    @weyou 改不了 referer,却可以绕过的~~~ 一个 302 就过了~~~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.