当前位置: 首页 > news >正文

同源策略简介

什么是同源策略
        同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少了同源策略,浏览器很容易受到 XSS、 CSFR 等攻击。

(1)在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。源是由URI,主机名,端口号组合而成的。这个策略可以阻止一个页面上的恶意脚本通过页面的DOM对象获得访问另一个页面上敏感信息的权限。

(2)同源策略是为了安全,确保一个应用中的资源只能被本应用的资源访问.

        设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,会发生什么?很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。

        **由此可见,"同源政策"是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了
        **

同源(协议相同  域名相同   端口相同)  举例:
只要不满足其中任意一个要求,就不符合同源策略,就会出现“跨域”。
| http://store.company.com/dir2/other.html | 同源 | 只有路径不同 | |http://store.company.com/dir/inner/another.html| 同源 | 只有路径不同 | |https://store.company.com/secure.html | 失败 | 协议不同 | |http://store.company.com:81/dir/etc.html | 失败 | 端口不同 (http://默认端口是80) | |http://news.company.com/dir/other.html` | 失败 | 主机不同(域名不同)

同源策略又分以下情况
DOM 同源策略:禁止对不同源页面 DOM 进行操作。这里主要场景是 iframe 跨域的情况,不同域名的 iframe 是限制互相访问的。
XMLHttpRequest 同源策略:禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。

不同源会怎么样?
对于js脚本有限制。
主要表现在3点
(1) 无法用js读取非同源的Cookie、LocalStorage 和 IndexDB 无法读取。
(2) 无法用js获取非同源的DOM 。
(3) 无法用js发送非同源的AJAX请求 。更准确的说,js可以向非同源的服务器发请求,但是服务器返回的数据会被浏览器拦截。

是谁来执行同源策略的?
同源策略是由浏览器来执行。所有的限制都是浏览器的作用。这是浏览器为了保护用户的数据安全而采取的策略。是浏览器对javascript施加的安全限制。所谓同源是指,域名,协议,端口均相同

同源策略如何保护用户数据安全?没有同源策略会怎么样?
同源策略对于js的限制有3点,我们一点一点来说。
(1) 无法用js读取非同源的Cookie、LocalStorage 和 IndexDB 无法读取。这条很好理解。为了防止恶意网站通过js获取用户其他网站的cookie。
(2) 无法用js获取非同源的DOM 。
如果没有这一条,恶意网站可以通过iframe打开银行页面,可以获取dom就相当于可以获取整个银行页面的信息。
(3) 无法用js发送非同源的AJAX请求 。

 

http://www.lryc.cn/news/165366.html

相关文章:

  • 数据量大,分析困难?试试pandas随机抽样
  • stm32---外部中断
  • 电子企业MES管理系统实施的功能和流程有哪些
  • 代码随想录二刷day24
  • 谷粒商城篇章6 ---- P193-P210 ---- 异步线程池商品详情【分布式高级篇三】
  • gcc中的cc1 collect2
  • 学习day59
  • Go Tip02 指针类型 、值类型和引用类型 、标识符的命名规范
  • CSS中如何实现文字跑马灯效果?
  • 《昆明海晏村:修缮后的新生,历史与现代的完美交融》
  • C++ --- Day02 封装
  • 墨西哥专线清关有什么要求?
  • SpringMVC中的JSR303与拦截器的使用
  • 神经网络 01(介绍)
  • 【element-ui】el-date-picker 之picker-options时间选择区间禁用效果的实现
  • Exchange Serve各版本说明及下载
  • 软件测试 | 当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?
  • 15.3K Star,超好用的开源协作式数字白板:tldraw
  • MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响
  • git merging两边都被删除的文件
  • 项目--苍穹外卖
  • 从零开发短视频电商 使用Spring WebClient发起远程Http调用
  • Python实现成语接龙
  • 继续上一个爬虫,所以说selenium加browsermobproxy
  • Sentinel服务熔断和流控
  • 01_TMS320F28004x系列MCU介绍和资料搜集
  • JavaScript中获取对象属性的不同方法
  • 【STM32教程】第四章 STM32的外部中断EXTI
  • 力扣第40天----第121题、第122题
  • Flask 使用 JWT(二)