CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

referer

2017年5月23日 727点热度 0人点赞 0条评论

referer

  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

使用Referer Meta标签控制referer

Conermx2015-01-26+5共323506人围观 ,发现 7 个不明物体资讯

本文描述了一个关于 http 协议中 referer 的 metadata 参数的提议,使用这个 metadata 参数,html 文档可以控制 http 请求中的 referer ,比如是否发送 referer、只发送 hostname 还是发送完整的 referer 等。虽然有一些方法可以控制 referer ,比如 flash,以及一些 js 的 tricks,但是本文中描述的是另外一番景象。

使用场景

在某些情况下,出于一些原因,网站想要控制页面发送给 server 的 referer 信息的情况下,可以使用这一 referer metadata 参数。

隐私

社交网站一般都会有用户个人页面,这些页面中用户都有可能添加一些外网的链接,而社交网站有可能不希望在用户点击了这些链接的时候,泄露用户页面的 URL ,因为这些 URL 中可能包含一些敏感信息。当然,有些社交网站可能只想在 referer 中提供一个 hostname,而不是完整的 URL 信息。

安全

有些使用了 https 的网站,可能在 URL 中使用一个参数(sid 等)来作为用户身份凭证,而又需要引入其他 https 网站的资源,这种情况下,网站肯定不希望泄露用户的身份凭证信息。

Object-Capability Discipline

有些网站遵循Object-Capability Discipline,而 referer 刚好与这一策略相悖,所以,网站能够控制 refeer 将对 Object-Capability Discipline 很有利。

技术细节

referer 的 metedata 参数可以设置为以下几种类型的值:

never
always
origin
default

如果在文档中插入 meta 标签,并且 name 属性的值为 referer,浏览器客户端将按照如下步骤处理这个标签:

1.如果 meta 标签中没有 content 属性,则终止下面所有操作
2.将 content 的值复制给 referrer-policy ,并转换为小写
3.检查 content 的值是否为上面 list 中的一个,如果不是,则将值置为 default

上述步骤之后,浏览器后续发起 http 请求的时候,会按照 content 的值,做出如下反应(下面 referer-policy 的值即 meta 标签中 content 的值):

1.如果 referer-policy 的值为never:删除 http head 中的 referer;
2.如果 referer-policy 的值为default:如果当前页面使用的是 https 协议,而正要加载的资源使用的是普通的 http 协议,则将 http header 中的 referer 置为空;
3.如果 referer-policy 的值为 origin:只发送 origin 部分;
4.如果 referer-policy 的值为 always:不改变http header 中的 referer 的值,注意:这种情况下,如果当前页面使用了 https 协议,而要加载的资源使用的是 http 协议,加载资源的请求头中也会携带 referer。

例子

如果页面中包含了如下 meta 标签,所有从当前页面中发起的请求将不会携带 referer:

<meta name="referrer" content="never">

如果页面中包含了如下 meta 标签,则从当前页面中发起的 http请求将只携带 origin 部分(注:根据原文中的语境,我理解这里的 origin 是包含了 schema 和 hostname 的部分 url,不包含 path 等后面的其他 url 部分),而不是完整的 URL :

<meta name="referrer" content="origin">

注意:在使用本文中所述的 meta 标签的时候,浏览器原有的 referer 策略将被打破,比如从 http 协议的页面跳转到 https 的页面的时候,如果设置了适当的值,也会携带 referer。

其他问题

这与 rel=noreferer 有什么关系呢?可能 rel=noreferer 会覆盖掉本文中的 meta 标签所设置的值。也就是功能覆盖。
origin 信息不是一个完整的 url,所以浏览器客户端估计会在 origin 后面加一个 / 来作为 path 部分。
如果 origin 是唯一的,会发生什么情况呢?估计 referer 会被忽略。

译者注

这篇文章最初写于2012年,目前在原始页面已经是废弃状态,并且已经提供了w3c 的referer-policy 页面,但是,译者注意到,目前很多网站在防御 CSRF 的时候,都采用校验 referer 的方法,有时候允许 referer 为空,并且某些 BAT 厂商的重要业务在防御 JSON 劫持的时候,也采用校验 referer 的方法并允许 referer 为空,也许你会觉得本文中描述的只是一种提议,但是,FireFox 在21日的一篇文章中已经声明,从 Firefox 36 Beta 开始,将会支持 referer-policy,这无疑会让一些厂商的业务面临威胁。

[参考来源wiki.whatwg.org,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]

Conermx17 篇文章等级: 5级
|
|
  • 上一篇:Windows10安全增强:Build 9926引入的两个字体安全特性
  • 下一篇:马来西亚航空公司遭黑客入侵,疑似黑客组织Lizard Squad所为
发表评论

已有 7 条评论

  • tk 2015-01-26回复1楼

    怎么没人评论?这不科学,一定是不明觉厉

    亮了(2)
  • ziwen (4级)ziwen 终端机 编程 web渗透爱好者 2015-01-27回复2楼

    怎么没人评论?这不科学,一定是不明觉厉

    亮了(3)
  • 造化不弄僵尸大阿叔 2015-01-26回复3楼

    HTTP,超文本传输协议 HTML,超文本标记语言或超文本链接标示语言

    亮了(0)
  • tktk 2015-01-27回复4楼

    json劫持、csrf防御允许referer为空从来都不安全; 从 https 到普通站点的请求是不带referer的;

    亮了(0)
  • /mg凤舞九天 (2级) 2015-01-29回复5楼

    浏览器的浏览规则的改变一定会伤及Web服务提供商,而且是大片大片的服务提供商。。。

    亮了(0)
  • melonzhang 2016-12-13回复6楼

    感谢,刚因为referer过长导致服务端请求失败,看到这个直接干掉了

    亮了(0)
  • 堕落desc (1级) 2017-03-14回复7楼

    666 舅服你

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

Conermx

这家伙太懒,还未填写个人描述!

17 篇文章8 条评论

相关阅读

  • [快讯]互联网最大规模帐号劫持漏洞即将引爆–用户数据隐私受到再一次考验
  • iOS 6.x越狱工具evasi0n正式推出
  • 在图片中加入噪点就能骗过Google最顶尖的图像识别AI
  • 钟馗之眼(ZoomEye):网络空间搜索引擎
  • 安全事故启示录:回看美国零售巨头塔吉特(Target)大规模数据泄露事件

特别推荐

关注我们 分享每日精选文章

不容错过

  • 我们聚集了一批精英白帽子,然后把他们带出了国……漏洞盒子2017-03-31
  • Win64bit提权0day漏洞(CVE-2014-4113)只是内核模式漏洞的开始xiaoya2014-10-22
  • 2016 FreeBuf互联网安全创新大会(FIT):共探安全创新源动力FB独家2015-12-03
  • 揭秘美国国安局(NSA)的利剑:获取特定情报行动办公室TAOlanlan2014-01-04

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2017年5月23日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me