老师,请问为何浏览器要限制ajax跨域,服务端设置一下CORS过滤器就可以,逻辑是什么?

来源:5-4 Cookies安全策略

bestming

2019-10-13

不太清楚为何要浏览器要限制服务器AJAX跨域,是为了保护什么?

写回答

1回答

TooooBug

2019-11-13

这个在课程中其实应该也有涉及,但可能没有明确单独拿出来说。浏览器端的同源策略的理解很重要。

首先,如果不限制跨域会发生什么。

当你访问我的网站时,我ajax一下网银的接口看一下你的余额?或者我直接ajax一个转账?

那么作为银行网站,我当然是不愿意接口被这样跨域使用的。所以在浏览器的同源策略限制下,银行网站有了选择。我不加CORS你就没有办法跨域发起请求。而加不加CORS是银行网站说了算。这是个主动权的问题。如果没有这个策略的限制,银行网站没有主动权,没得选呀,只能再加上防止CSRF的很多手段来防御。

再说同源策略是谁限制的?是浏览器,也就是说如果你用个其他的HTTP客户端,或者自己写个什么程序,或者自己写个浏览器,可以很容易绕过这个限制。

既然如此容易被绕过,为什么还要有呢?因为要防止“搞别人”,大多数用户是使用符合web标准的浏览器的,而不是使用你编写的程序/浏览器。这一点使得“坏人”没有办法去“搞别人”,不管你自己写代码还是用自己的浏览器,那都是“搞自己”。如果你要搞别人,那就需要别人安装你的程序或者浏览器,这时候事情的性质就已经是木马病毒了,跟浏览器关系不大了。

0
0

腾讯大牛亲授 Web前后端漏洞分析与防御技巧

提高每一行代码安全系数,突破前后端开发Web安全弱项

1186 学习 · 112 问题

查看课程