Glittering's blog Glittering's blog
Home
  • 学习手册

    • 《JavaScript教程》
    • 《TypeScript教程》
    • 《Git》
    • 《Vite》
    • 《Vue3》
    • 《React18》
    • 《CSS》
    • 《Tailwind CSS》
    • 《ES6 教程》
    • 《TypeScript 从零实现 axios》
  • 技术文档
  • 算法
  • 工作总结
  • 实用技巧
  • collect
About
  • Classification
  • Label
GitHub (opens new window)

Glitz Ma

前端开发工程师
Home
  • 学习手册

    • 《JavaScript教程》
    • 《TypeScript教程》
    • 《Git》
    • 《Vite》
    • 《Vue3》
    • 《React18》
    • 《CSS》
    • 《Tailwind CSS》
    • 《ES6 教程》
    • 《TypeScript 从零实现 axios》
  • 技术文档
  • 算法
  • 工作总结
  • 实用技巧
  • collect
About
  • Classification
  • Label
GitHub (opens new window)
  • 技术文档

  • 算法

  • 工作总结

    • 时区校正
    • 上传下载文件方式总结
    • web异常监控和分析
    • 前端优化指南
    • http缓存机制
    • 静态资源灰度发布
    • 浏览器原理及渲染机制
    • Chrome DevTools 渲染分析实战
    • Layout Thrashing(布局抖动)
    • Composite Layer(合成层)
    • 全局设置滚动条样式好吗?
    • 虚拟列表如何避免Layout和Paint
    • 前端安全知识
    • 安全(同源策略 / CSP / CORS)
    • 浏览器安全模型
      • 一、浏览器安全模型总览(先有全局)
      • 二、核心安全边界(面试最常问)
        • 1️⃣ 同源隔离(Origin-based Isolation)
        • 限制的对象
        • 为什么不是「域名」?
        • 2️⃣ 进程隔离(Process Isolation)⭐⭐⭐⭐⭐
        • 早期(不安全)
        • 现代浏览器(Chrome 为代表)
        • 好处
        • 3️⃣ 沙箱(Sandbox)⭐⭐⭐⭐⭐
        • JS 能做什么?
        • 底层
      • 三、资源访问控制模型
        • 1️⃣ 网络请求模型
        • JS 发请求
        • 2️⃣ Cookie 安全模型
        • 各字段作用
        • 3️⃣ Storage 隔离
      • 四、代码执行安全(JS 执行模型)
        • 1️⃣ JS 是单线程,但不是单环境
        • 为什么重要?
        • 2️⃣ Web Worker 安全
        • 3️⃣ eval / new Function(高危)
      • 五、跨文档通信安全(postMessage)
        • 正确用法(高频考点)
        • 错误示例
      • 六、权限模型(Permissions API)
      • 七、HTTPS 与传输安全
        • 为什么 HTTPS 是安全模型的一部分?
        • HSTS
      • 八、常见攻击在安全模型中的“位置”
      • 九、面试“安全模型”终极总结
    • 从chrome v8 讲安全
    • WebAssembly(Wasm)
    • XSS → JIT → 沙箱逃逸
    • 微前端总结
    • websocket聊天
    • axios 与 promise
    • react高级特性
    • react基础知识总结
    • vue2常见原理总结
    • vue2基础知识总结
    • webpack优化实践
    • webpack基础应用知识总结
    • 小程序笔记
    • 小程序工程模板设计
    • 地图标绘--射线法来计算点在多边形内
  • 实用技巧

  • 收藏夹

  • 技术
  • 工作总结
mamingjuan
2023-05-22
目录

浏览器安全模型

# 一、浏览器安全模型总览(先有全局)

可以把浏览器想成一个沙箱操作系统:

用户数据(Cookie / 本地文件 / 摄像头)
        ↑
   浏览器安全边界
        ↑
网页 JS(不可信)
1
2
3
4
5

核心目标三句话:

  • 1️⃣ 网页之间不能互相攻击
  • 2️⃣ 网页不能随意访问用户隐私和系统资源
  • 3️⃣ 漏洞出现时,影响范围要尽量小

# 二、核心安全边界(面试最常问)

# 1️⃣ 同源隔离(Origin-based Isolation)

这是浏览器最基础的安全边界。

# 限制的对象

  • DOM
  • Cookie / Storage
  • JS 执行环境
不同 Origin = 不同安全域
1

# 为什么不是「域名」?

因为:

  • 协议不同(http / https)安全级别不同
  • 端口不同 → 可能是不同服务

# 2️⃣ 进程隔离(Process Isolation)⭐⭐⭐⭐⭐

现代浏览器最重要的安全升级

# 早期(不安全)

  • 多个页面共用一个进程
  • 一个 XSS → 全部沦陷

# 现代浏览器(Chrome 为代表)

  • Site Isolation
  • 一个站点 ≈ 一个渲染进程
Browser Process
 ├── Renderer (site A)
 ├── Renderer (site B)
 └── Network Process
1
2
3
4

# 好处

  • 即使 JS 被攻破,也困在进程里
  • 防 Spectre 类硬件漏洞

# 3️⃣ 沙箱(Sandbox)⭐⭐⭐⭐⭐

JS ≠ 系统权限

# JS 能做什么?

  • ✅ 操作 DOM
  • ✅ 发网络请求
  • ❌ 读文件系统
  • ❌ 访问系统 API
  • ❌ 执行本地程序

# 底层

  • 操作系统级沙箱
  • seccomp / AppContainer / seatbelt

# 三、资源访问控制模型

# 1️⃣ 网络请求模型

# JS 发请求

fetch(url)
1

限制点:

  • 同源策略(读响应)
  • CORS(服务器放行)
  • Mixed Content(HTTPS 页面不能请求 HTTP)

# 2️⃣ Cookie 安全模型

Set-Cookie:
  HttpOnly;
  Secure;
  SameSite
1
2
3
4

# 各字段作用

字段 防什么
HttpOnly 防 XSS
Secure 防中间人
SameSite 防 CSRF

# 3️⃣ Storage 隔离

存储 隔离维度
localStorage origin
sessionStorage tab + origin
IndexedDB origin

⚠️ iframe 不同源完全隔离


# 四、代码执行安全(JS 执行模型)

# 1️⃣ JS 是单线程,但不是单环境

Main Thread
 ├── JS
 ├── DOM
 └── Layout
1
2
3
4

# 为什么重要?

  • 阻塞 ≠ 安全
  • Worker 执行环境更“干净”

# 2️⃣ Web Worker 安全

能力 是否允许
DOM ❌
Cookie ❌
fetch ✅
postMessage ✅

👉 Worker 是 隔离计算沙箱


# 3️⃣ eval / new Function(高危)

原因:

  • 绕过静态分析
  • 绕过 CSP
  • 执行用户输入
eval(userInput) // ❌
1

# 五、跨文档通信安全(postMessage)

# 正确用法(高频考点)

window.addEventListener('message', e => {
  if (e.origin !== 'https://trusted.com') return
})
1
2
3

# 错误示例

window.addEventListener('message', e => {
  // 不校验 origin
})
1
2
3

# 六、权限模型(Permissions API)

浏览器对敏感能力 显式授权:

能力 是否弹窗
摄像头 ✅
麦克风 ✅
定位 ✅
剪贴板 部分

👉 且是:

  • 按站点
  • 可随时撤销

# 七、HTTPS 与传输安全

# 为什么 HTTPS 是安全模型的一部分?

没有 HTTPS:

  • 同源策略 ≈ 失效
  • Cookie 可被劫持
  • CSP 可被篡改

# HSTS

Strict-Transport-Security: max-age=31536000
1

# 八、常见攻击在安全模型中的“位置”

攻击 突破哪层
XSS JS 执行层
CSRF Cookie 自动发送
Clickjacking UI 层
Spectre 进程隔离
供应链攻击 执行信任链

# 九、面试“安全模型”终极总结

  • 浏览器安全模型通过同源策略、进程隔离和沙箱机制,将不可信的网页代码限制在最小权限范围内;同时结合 CORS、CSP、权限系统和 HTTPS,防止数据泄露、代码注入和越权访问。
上次更新: 2026/01/07, 09:20:46
安全(同源策略 / CSP / CORS)
从chrome v8 讲安全

← 安全(同源策略 / CSP / CORS) 从chrome v8 讲安全→

Copyright © 2015-2026 Glitz Ma
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式