yihan12 / Frontend-interview

记录一些前端面试相关题目
2 stars 0 forks source link

聊聊浏览器的同源策略 #17

Open yihan12 opened 10 months ago

yihan12 commented 10 months ago

什么是浏览器同源策略?

同源:如果两个 URL 的协议、域名(主机名)和端口都相同,我们就称这两个 URL 同源。
这两个 URL 是同源的

https://time.geekbang.org/?category=1
https://time.geekbang.org/?category=0

源:就是协议、域名和端口号。

同源策略:SOP(Same origin policy)是由Netscape公司1995年引入浏览器的一种约定,是浏览器最核心、最基本的安全功能,若缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击所谓同源是指"协议+域名+端口"三者相同,若两个URL的协议、域名、端口号都相同,则两者为同源,有一个不同则非同源,即便两个不同的域名指向同一个ip地址,也是非同源的

非同源的URL在没有明确授权的情况下,不能读写对方资源(不能相互通信)

具体来讲,同源策略主要表现在 DOM、Web 数据和网络这三个层面。

浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略

安全与便利

同源策略会隔离不同源的 DOM、页面数据和网络通信,进而实现 Web 页面的安全性。

同源策略将限制以下几种行为:

(1)Cookie、LocalStorage 和 IndexDB 无法读取

(2)DOM 和 Js对象无法获得

(3)AJAX 请求不能发送

以下两种不受同源策略的限制:

(1)页面中的链接,重定向以及表单提交是不会受到同源策略限制

(2)跨域资源的引入,但是js不能读写加载的内容,如嵌入到页面中的