浏览器安全模型
# 一、浏览器安全模型总览(先有全局)
可以把浏览器想成一个沙箱操作系统:
用户数据(Cookie / 本地文件 / 摄像头)
↑
浏览器安全边界
↑
网页 JS(不可信)
1
2
3
4
5
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
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
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
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
2
3
# 错误示例
window.addEventListener('message', e => {
// 不校验 origin
})
1
2
3
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