看了网上的解释,都说若没有跨域限制,做一个 iframe 是你需要登录的网站,外层是恶意代码网站,然后你的账号密码他能得到,并且通过 ajax 发送到他的服务器。
但即使有跨域限制,有了默认跨域的 img 或者 script 标签,我还是可以把数据发送到我的服务器。那跨域有啥用?
另外想问 CSRF 对 POST 请求怎么处理,因为我能想到的 CSRF 攻击,就是建一个没有跨域限制的 img 或者 script 标签发送 GET 请求,那么 POST 请求是不是防范大部分的 CSRF 攻击?
1
weyou 2017-08-21 10:43:44 +08:00 via Android
从另一个域发起 post,比如 form 的 submit
|
3
jugelizi 2017-08-21 10:53:58 +08:00
跨域不是说不能发起请求 而是浏览器根据服务器的响应阻断了数据返回
实际上那个请求对方已经收到了 post 和 csrf 无关 建议在看看书 |
5
TakWolf 2017-08-21 10:55:13 +08:00
CSRF 防范的并不是别人把你的数据发到他自己的服务器,而是防止别人调用你的接口
|
6
TakWolf 2017-08-21 10:56:20 +08:00
|
9
jugelizi 2017-08-21 11:10:07 +08:00
@xilixjd。。。比如你是管理员 登录某系统 可以点击删除按钮把一篇文章删除,那么我可以写个 js 或者其他方式实现请求该地址 你访问他的页面时浏览器就会执行这个请求 就相对于伪造了你的操作去删除
|
11
lianyue 2017-08-21 11:25:25 +08:00
没 CORS 跨域取数据几乎只能用 GET 方法 JSONP 不能自定义 header 头
有了 CORS 任何方法 自定义 header 头 都能用 |
12
wangym5106 2017-08-21 14:11:49 +08:00
同源策略是为了防止一个源上的脚本使用其他源上的资源,比如读取其他源上的页面内容。
CSRF 攻击只是让浏览器发出请求,并没有使用其它源上的资源,所以也并不受同源策略的影响。 |
13
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 ) |