检验 Referer 的作用是什么?

2017-02-23 14:08:30 +08:00
 jiangzhuo

下面这样的请求几天之前是正常的 今天访问了一下被 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 ,并且这是请求的还是首页。 人家没开发过什么网站,更对网站安全没啥研究。

4552 次点击
所在节点    问与答
13 条回复
luckyduck
2017-02-23 15:35:24 +08:00
一般用来防止图片盗链
jiangzhuo
2017-02-23 15:37:31 +08:00
@luckyduck 但是我请求的是 A 站首页,没有防盗链的需求。防盗链应该是在 CDN 上配的
shiny
2017-02-23 15:37:57 +08:00
如果把 A 站资源嵌入自己网站供访问者使用,无法篡改访客的 Referer 。
jiangzhuo
2017-02-23 15:49:28 +08:00
@shiny 但是嵌个首页链接也。。。。。。
很好奇一开始 A 站没做 referer 处理,是这两天根据 Access log 分析出什么来加上的?
crab
2017-02-23 15:54:53 +08:00
@jiangzhuo 怎么可能首页。浏览器第一次打开如果是首页,那也没 referer
jiangzhuo
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
2017-02-23 17:17:52 +08:00
@shiny 但是可以不发送 referer
shiny
2017-02-23 17:30:54 +08:00
@lslqtz 记得好像是 A 链接可以控制不发送,而且不是所有浏览器都支持?
changwei
2017-02-23 17:50:19 +08:00
js 无法修改通过 html 标签的 src 或者 xmlhttprequest 发出去的请求的 referer ,校验这个值可以简单的防御 csrf 攻击。
weyou
2017-02-23 19:20:41 +08:00
如果被攻击者使用的是正常的浏览器, csrf 攻击真的改不了 referer
lslqtz
2017-02-23 21:01:11 +08:00
@shiny 兼容性的确是问题
@changwei
meta 有标签可以改全部的
lslqtz
2017-02-23 21:01:27 +08:00
改 -> 隐藏
Goheing
2017-02-23 21:06:03 +08:00
@weyou 改不了 referer,却可以绕过的~~~ 一个 302 就过了~~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342596

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX