问个问题,浏览器既然没有解决 CSRF 的问题,那为什么要有跨域限制?

2017-08-21 10:39:11 +08:00
 xilixjd

看了网上的解释,都说若没有跨域限制,做一个 iframe 是你需要登录的网站,外层是恶意代码网站,然后你的账号密码他能得到,并且通过 ajax 发送到他的服务器。

但即使有跨域限制,有了默认跨域的 img 或者 script 标签,我还是可以把数据发送到我的服务器。那跨域有啥用?

另外想问 CSRF 对 POST 请求怎么处理,因为我能想到的 CSRF 攻击,就是建一个没有跨域限制的 img 或者 script 标签发送 GET 请求,那么 POST 请求是不是防范大部分的 CSRF 攻击?

4802 次点击
所在节点    问与答
13 条回复
weyou
2017-08-21 10:43:44 +08:00
从另一个域发起 post,比如 form 的 submit
xilixjd
2017-08-21 10:49:12 +08:00
@weyou 那这样不是被跨域限制给挡住了吗
jugelizi
2017-08-21 10:53:58 +08:00
跨域不是说不能发起请求 而是浏览器根据服务器的响应阻断了数据返回
实际上那个请求对方已经收到了

post 和 csrf 无关 建议在看看书
weyou
2017-08-21 10:54:20 +08:00
@xilixjd form 提交没有跨域限制
TakWolf
2017-08-21 10:55:13 +08:00
CSRF 防范的并不是别人把你的数据发到他自己的服务器,而是防止别人调用你的接口
TakWolf
2017-08-21 10:56:20 +08:00
xilixjd
2017-08-21 11:03:05 +08:00
@jugelizi OK 明白了,但是跨域究竟有什么用还是不知道
xilixjd
2017-08-21 11:08:16 +08:00
@TakWolf 好的
jugelizi
2017-08-21 11:10:07 +08:00
@xilixjd。。。比如你是管理员 登录某系统 可以点击删除按钮把一篇文章删除,那么我可以写个 js 或者其他方式实现请求该地址 你访问他的页面时浏览器就会执行这个请求 就相对于伪造了你的操作去删除
xilixjd
2017-08-21 11:13:44 +08:00
@jugelizi CSRF 不就是干这个事的吗,现在有了跨域限制,但是还是防范不了?
lianyue
2017-08-21 11:25:25 +08:00
没 CORS 跨域取数据几乎只能用 GET 方法 JSONP 不能自定义 header 头

有了 CORS 任何方法 自定义 header 头 都能用
wangym5106
2017-08-21 14:11:49 +08:00
同源策略是为了防止一个源上的脚本使用其他源上的资源,比如读取其他源上的页面内容。

CSRF 攻击只是让浏览器发出请求,并没有使用其它源上的资源,所以也并不受同源策略的影响。
SoloCompany
2017-08-22 03:15:40 +08:00
CSRF 和 CORS 这两个并不是同一回事请不要弄混了

网站的 CSRF 保护是网站的事情,浏览器并不能帮你解决欺骗点击这类 CSRF 攻击,必须网站自己去解决

而 CORS 是浏览器的 XHR 规范之一,实际需要保护的,是第三方网站的 Cookie ;
欺骗点击无法防止,但至少你不能获取到点击后的页面返回的内容
而 XHR 规范和嵌入式图片以及脚本是不一样的
嵌入图片或 js / css 这类资源在规范上是允许的,并且返回内容也是可读取的
这是 JSONP 能实现的重要依据
但有一个重要的前提,Cookie 是不会发送的,因而请求可以认为是「无害」的

要知道如果允许带 Cookie 请求非同源网站并且还能得到请求内容的危害性是非常大的,简直就相当于裸奔了

在制订 XHR 规范的时候,对跨域的限制更加严格,虽然理论上不发送 Cookie 的话请求可以认为「无害」,但规范制定是默认禁止所有的跨域请求,更不会发送 Cookie,所有的决定权都留给第三方网站来决定,非同源的 XHR 请求会先发送一个不带 Cookie 的 HEAD 请求,服务端通过返回 HEAD 告诉浏览器接下来应该怎么做(是否允许请求,以及允许交换什么样的 HEADER )

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

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

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

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

© 2021 V2EX