同源策略

如题所述

同源策略是在1995年,由Netscape公司而引入浏览器的,目前,所有的浏览器都在实行这个政策,它的最初的含义是指,A网页设置Cookie,耳B网页不能打开,除非这两个网页是“同源”,而所谓的“同源”指的是“三个相同”

简单来说:同源策略限制从一个源(协议、域名、端口)加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在的恶意文件的关键的安全机制。如果源不一样就是协议、域名、端口有一个不一样的话,就是非同源策略,就跨域了。

举例来说 http://www.example.com/dir/page.html 这个网址,它的协议是 http://, 而他的域名是 www.example.com , 端口是80(端口号默认是可以省略的) 它的同源情况如下:

同源策略出现的目的是为了保护用户的信息安全,防止有恶意的网站窃取用户的数据。

你可以设想一个这样的情况:A网站是一家银行,在用户登录以后,A网站在用户的使用机器上设置了一个Cookie,这其中包含了一些隐私信息(比如存款金额),而在用户离开A网站之后,又去访问了B网站,而这个时候如果没有同源策略,B网站就可以读取到A网站的Cookie,那么用户的信息就会泄露,更可怕的是,Cookie往往是用来保存用户的登录状态,如果用户没有退出登录,其他的网站就可以冒充用户,为所欲为,因为,浏览器同事还规定,提交表单是不受同源策略的限制。

所以,从这里可以看出来,同源策略是必需的,否则Cookie可以共享,那互联网就没有什么安全性可言了。

在随着互联网的发展,同源策略越来越严格,就目前而言,如果非同源,共有三种行为受到限制。

这个链接很全 相关链接
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-05-08

一、同源策略

1995年,同源政策由 Netscape 公司(网景公司)引入浏览器。目前,所有浏览器都实行这个政策。同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。随着互联网的发展,“同源政策”越来越严格。目前,如果非同源,共有三种行为受到限制。

    Cookie、LocalStorage和indexDB 无法读取

    DOM 无法获得

    AJAX请求不能发送

    二、同源的三个条件:协议、域名、端口号要相同。

    三、举例:请求页面和被请求页面的同源分析:

    四、概念补充

    1.Cookie是什么?

    cookies中文名称为小型文本文件,指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。它满足RFC6265标准。

    Cookie是用户在访问网站时,服务器将存储在计算机上的数据发送到用户的浏览器上的文件,存储在 Cookie 中的数据是加密的,只有当用户离开该网站并重新访问时才会解密并使用。Cookie 一般包含了用户的个人信息,例如:用户名、密码、浏览历史、购买记录等。

    Cookie 可以帮助网站和应用程序辨别用户身份,从而提高安全性和提供更好的用户体验。但是,Cookie 也可能被滥用,例如:被用于追踪用户行为、进行恶意攻击等。

    为了保护用户隐私,一些网站和应用程序会限制 Cookie 的使用,或者要求用户在使用网站时同意关闭 Cookie。用户可以通过设置浏览器 扩展程序或使用无痕模式等方式来减少 Cookie 的使用。

    2.LocalStorage 是什么?

    LocalStorage是本地存储文件。

    对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大。

    localstorage 在浏览器的 API 有两个:localStorage 和sessionStorage,存在于 window 对象中:localStorage 对应 window.localStorage,sessionStorage 对应window.sessionStorage。

    localStorage 和 sessionStorage 的区别主要是在于其生存期。

    这里的作用域指的是:如何隔离开不同页面之间的localStorage。

    localStorage只要在相同的协议、相同的主机名、相同的端口(符合同源策略)下,就能读取/修改到同一份localStorage数据。

    sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下。

    参考链接:网页链接

    3.indexDB 是什么?

    再知道indexDB之前,我们要知道现有的浏览器存贮方案:

    1.cookie:大小不超过4kb,每次请求发回服务器。

    2.localStorage:大小2.5MB到10MB之间,不提供搜索功能,不能建立自定义索引。

    3.第三种就是indexDB,它是浏览器提供的本地数据库,可以被网页脚本创建和操作,允许存贮大量数据,提供查找接口,能建立索引。

    数据库类型而言,indexDB更接近NoSQL数据库。

    4.DOM是什么?

    DOM是JS操作网页的接口,全称为“文档对象模型”(Document Object Model)。它的作用是将网页转为一个JS对象,从而可以用脚本进行各种操作(比如增删内容)。

    5.AJAX请求是什么?

    “AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 ajax是一种浏览器通过js异步发起请求,局部更新页面的技术。

相似回答