浏览器工作原理与实践
李兵
前盛大创新院高级研究员
56402 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
浏览器工作原理与实践
15
15
1.0x
00:00/00:00
登录|注册

32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?

跨文档消息机制
跨域请求
引用第三方资源
内容安全策略(CSP)
XSS攻击
网络层面
数据层面
DOM层面
页面安全策略原型
跨域资源共享和跨文档消息机制
页面中可以嵌入第三方资源
同源策略表现
同源定义
同源策略、CSP和CORS之间的关系
总结
安全和便利性的权衡
同源策略
浏览器系统安全
浏览器网络安全
Web页面安全
思考时间
页面中的安全策略
浏览器安全
浏览器安全相关内容

该思维导图由 AI 生成,仅供参考

通过前面 6 个模块的介绍,我们已经大致知道浏览器是怎么工作的了,也了解这种工作方式对前端产生了什么样的影响。在这个过程中,我们还穿插介绍了一些浏览器安全相关的内容,不过都比较散,所以最后的 5 篇文章,我们就来系统地介绍下浏览器安全相关的内容。
浏览器安全可以分为三大块——Web 页面安全、浏览器网络安全浏览器系统安全,所以本模块我们就按照这个思路来做介绍。鉴于页面安全的重要性,我们会用三篇文章来介绍该部分的知识;网络安全和系统安全则分别用一篇来介绍。
今天我们就先来分析页面中的安全策略,不过在开始之前,我们先来做个假设,如果页面中没有安全策略的话,Web 世界会是什么样子的呢?
Web 世界会是开放的,任何资源都可以接入其中,我们的网站可以加载并执行别人网站的脚本文件、图片、音频 / 视频等资源,甚至可以下载其他站点的可执行文件。
Web 世界是开放的,这很符合 Web 理念。但如果 Web 世界是绝对自由的,那么页面行为将没有任何限制,这会造成无序或者混沌的局面,出现很多不可控的问题。
比如你打开了一个银行站点,然后又一不小心打开了一个恶意站点,如果没有安全措施,恶意站点就可以做很多事情:
修改银行站点的 DOM、CSSOM 等信息;
在银行站点内部插入 JavaScript 脚本;
劫持用户登录的用户名和密码;
读取银行站点的 Cookie、IndexDB 等数据;
甚至还可以将这些信息上传至自己的服务器,这样就可以在你不知情的情况下伪造一些转账请求等信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

同源策略是浏览器安全的基础,它通过限制不同源之间的资源访问和DOM操作来确保Web页面的安全性。然而,这种严格的安全策略也带来了一些限制,比如无法直接访问不同源站点的Cookie、IndexDB、LocalStorage等数据,以及默认情况下不能通过XMLHttpRequest等方式访问跨域资源。为了在安全性和便利性之间取得平衡,出现了内容安全策略(CSP)、跨域资源共享(CORS)和跨文档消息机制等解决方法。CSP限制了第三方资源的自由程度,CORS允许安全地进行跨域操作,而跨文档消息机制则实现了不同源的安全通信。这些安全策略的理解对于Web开发和安全至关重要,它们在保障Web页面安全的同时,也为开发者提供了灵活性和便利性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《浏览器工作原理与实践》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(27)

  • 最新
  • 精选
  • 歌顿
    同源策略、CSP 和 CORS 之间的关系: 同源策略就是说同源页面随你瞎搞,但是不同源之间想瞎搞只能通过浏览器提供的手段来搞 比如说 1. 读取数据和操作 DOM 要用跨文档机制 2. 跨域请求要用 CORS 机制 3. 引用第三方资源要用 CSP

    作者回复: 总结的很好

    2019-10-25
    2
    116
  • Angus
    看这篇幅,专栏应该会在浏览器安全中结束。从二十五讲开始就觉得越来越浅显了,前面好几篇说的后面章节再详细讲解的部分好像并没有出现。

    作者回复: 是的,有几个原因: 第一、每篇文章有death line的,越到后面时间越赶,所以完成每篇文章的时间就越来越紧凑了。 第二、浏览器这块要讲的东西比较多,有架构,JavaScript,页面,网络和安全,还有一些H5的内容。 所以当初在定目录的时候,主干36篇课程主要讲主线内容,要照顾广度,所以有些细节不能深入太多。比如提到CSP和CORS在主干课程中没办法讲的太细。 当然,这些原因并不是不把内容讲透的借口,接下来,我把会把很多深度内容放到加餐和答疑部分: 比如有老铁问事件循环中采用while会不会造成页面卡死的问题?这里我到时会补充介绍系统事件驱动机制,还会结合事件循环机制来介绍Performance。 还有很多老铁问到UI线程,所以这块我还要结合浏览器进程和网络进程来补充相关知识! 稍晚点就要着手准备加餐内容大纲了。

    2019-10-18
    2
    60
  • 希望老师能详细的讲解,最近几讲,感觉讲的太浅显了,都是些概念性的东西

    作者回复: 的确,篇幅有限,讲太细了广度照顾不到! 我先还是搭建整体的体系框架,涉及到细节内容我们答疑来补! 感觉我是在给自己挖个大坑,要补的内容感觉都能出一个小专栏了

    2019-10-17
    36
  • 空山鸟语
    老师总结的非常好,具体的细节我们可以自己查资料。 但是在我们学习过程中发现,现在网上文章质量参差不齐,想找到一篇好文章很不容易。比如某金,文章多而杂,往往是看完了感觉没什么收获,也消耗了耐心和精力。 针对这种情况,我们该怎么半呢?

    作者回复: 关于浏览器的介绍网上资料好的的确不多,写这个专栏的时候也查阅了很多网上的资料,但是总体上质量都不怎么行,而且有些作者的理解也不正确错误! 另外网上的资料也谁零碎、不成体系的! 如果自己去啃源码会花费很大精力! 所以极客时间的gray找到我的时候,我觉得来做浏览器专栏很有必要,因为浏览器应用已经非常广的,而市面上体系化介绍浏览器的书籍或者文章少之又少! 如果你想深入了解,这里我推荐去看一些官方举办会议的视频,比如油管上的blink on!另外还有源码里面的文档,不过啃着快的难度有点大!

    2019-11-19
    3
    10
  • Geek_259055
    想详细了解CORS,可以看阮一峰的这篇文章https://www.ruanyifeng.com/blog/2016/04/cors.html

    作者回复: 感谢提供资源

    2019-11-19
    6
  • 隔夜果酱
    这些安全机制感觉还是太弱了,非常容易被攻破.怪不得早些年钓鱼网站横行.

    作者回复: 目前稍微好点,有了沙盒,有了HTTPS,少了插件,页面进程也做了分离,攻击站点的难度和成本都提升了不少!

    2019-10-17
    1
  • 早起不吃虫
    老师,跨域资源共享和跨文档消息机制这一块可以详细讲一下吗

    作者回复: 讲这个我还得准备一些后端的演示代码,放到最后的答疑部分吧

    2019-10-17
    1
  • wd2010
    老师,浏览器的同源策略可以再讲细点么,比如浏览器的内部处理机制是怎样的,这些感觉很需要老师帮忙解答下

    作者回复: 这块浏览器处理到是不复杂的,主要是弄清楚同源策略的具体开了哪些口子,这些口子是如何影响到前后端开发的?

    2019-10-31
  • Demo_12
    同源策略是为了解决网络安全的问题,限制只能在同源的站点内操作DOM、本地数据、网络请求 而CSP 和 CORS是解决因同源策略限制而损失的灵活性和便利性 CSP,通过设置 Content-Security-Policy 来决定你的浏览器可以执行哪里的脚本,可以解决XSS攻击的问题 CORS,可以通过HTTP请求来共享不同源的数据 postMessage, 支持跨文档读取数据和操作 DOM
    2020-11-26
    9
  • -_-|||
    “CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码。”服务器怎么决定“浏览器是否能够执行内联 JavaScript 代码”?难道服务器还能监听浏览器执行的代码?
    2019-12-17
    5
    5
收起评论
显示
设置
留言
27
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部