沙箱隔离与安全

共 17 题
#

1. wujie(无界)的 iframe + Web Components 双层沙箱模型与 qiankun ProxySandbox 的性能与隔离对比

A ProxySandbox 能拦截所有 JS 语义,不存在逃逸面
B qiankun 的 ProxySandbox 与无界的 iframe 沙箱隔离强度完全相同
C 无界不需要通信机制,因此性能损耗为零
D 无界的 JS 在 iframe 独立全局中执行,隔离强度高于 qiankun 的 Proxy 代理模型 ✓ 正确答案
#

2. micro-app 的 Web Components 隔离机制,customElement 样式封装与 JS 作用域隔离的实现原理

A micro-app 的样式隔离在构建期完成,与运行时无关
B micro-app 完全不提供 JS 隔离能力
C shadow 模式没有任何副作用,可无条件启用
D micro-app 用自定义元素作为子应用容器,样式隔离可通过元素级 scoped 或 Shadow DOM 实现 ✓ 正确答案
#

3. 基于 Realms(ShadowRealm)提案的微前端 JS 隔离,原生隔离与 Proxy 代理的工程取舍

A ShadowRealm 提供独立全局的原生 JS 隔离,跨 realm 对象需经值传递或包装 ✓ 正确答案
B ShadowRealm 可以直接共享宿主 DOM,无需任何桥接
C ShadowRealm 已全量落地,所有浏览器生产可用
D ShadowRealm 的逃逸面比 Proxy 沙箱更大
#

4. 样式沙箱的多种方案对比,CSS Module、CSS-in-JS、scoped CSS、Shadow DOM 与 qiankun strictStyleIsolation

A CSS Module 的哈希类名可以完全阻止外部样式污染
B qiankun strictStyleIsolation 通过 shadowRoot 实现严格隔离,但子应用依赖 body 等全局样式的场景会受影响 ✓ 正确答案
C scoped CSS 的运行时改写可以覆盖所有 CSS 语法
D CSS-in-JS 不需要任何运行时开销
#

5. 微前端子应用的资源加载隔离,fetch 拦截、script 执行上下文与动态 import 的沙箱化

A 子应用脚本通过 with 包装 + eval 在沙箱上下文执行,fetch 与动态 import 也可被重定向到子应用基址 ✓ 正确答案
B 资源加载隔离只需拦截 script,无需处理 fetch
C 动态 import 无法被沙箱化,只能禁用
D fetch 拦截只能修改响应,不能修改请求地址
#

6. 沙箱逃逸的常见路径,原型链污染、Symbol.for 全局注册、iframe 通信劫持与防御策略

A postMessage 不需要做来源校验
B Symbol.for 的注册表是每个 realm 独立的,无法跨沙箱共享
C 原型链污染只影响沙箱内代码,不影响宿主
D 沙箱内修改 Object.prototype 会因原型共享而污染宿主与其他子应用 ✓ 正确答案
#

7. 微前端沙箱与浏览器 Site Isolation(站点隔离)的协同与冲突边界

A Site Isolation 与应用层沙箱都是同一层级的隔离机制
B 微前端沙箱是应用层隔离,Site Isolation 是浏览器进程级隔离,跨源子应用可获得浏览器级兜底 ✓ 正确答案
C 把跨站内容同源化可以增强 Site Isolation 的安全收益
D 同源子应用之间由 Site Isolation 负责隔离,无需应用层沙箱
#

8. iframe 沙箱的隔离,sandbox 属性与权限限制?

A allow-scripts 与 allow-same-origin 同时开启时,同源脚本可尝试解除 sandbox 限制 ✓ 正确答案
B sandbox 默认授予脚本执行与表单提交权限,需要显式关闭
C sandbox 可以阻止 iframe 发起任何网络请求
D sandbox 不影响顶层导航,子应用可随意跳转父页面
#

9. 多个子应用沙箱并存时的全局冲突,window 属性、全局事件与 CSS 变量命名空间的冲突治理与命名约定?

A 多个子应用声明同名 window 全局变量时,先加载的应用会覆盖后加载的
B 全局自定义事件无需命名空间,浏览器会自动隔离
C CSS 变量声明在子应用容器根上并采用命名空间命名,可降低跨应用污染 ✓ 正确答案
D 沙箱并存下不存在任何全局冲突的可能
#

10. 沙箱性能开销量化,Proxy trap 数量、代理深度与子应用渲染帧率的工程影响评估

A Proxy 沙箱对性能没有影响,trap 是零成本的
B 深代理比浅代理更快,因为缓存命中率高
C 沙箱性能问题只影响内存,不影响帧率
D 代理深度与 trap 触发频率是沙箱开销的主要来源,高频全局访问会放大主线程压力 ✓ 正确答案
#

11. 微前端的 JS 沙箱,with + Proxy 的实现?

A 实现上通过 with 把脚本作用域绑定到 Proxy,写操作落在值表、读操作可回退真实全局 ✓ 正确答案
B with + Proxy 沙箱中,未声明变量的写操作默认落入真实 window
C 严格模式下 with + Proxy 沙箱可以直接使用
D Proxy 可以拦截 Symbol 属性与 window.window 这类不可配置引用
#

12. 样式隔离与 CSS 命名冲突,BEM/CSS Modules/Shadow DOM?

A CSS Modules 在构建期哈希类名,机器保证唯一;Shadow DOM 提供浏览器级样式边界 ✓ 正确答案
B BEM 命名约定可以彻底消除 CSS 冲突
C Shadow DOM 的样式无法被任何方式穿透
D 三种方案机制相同,只是写法不同
#

13. 沙箱的安全边界,eval/Function 的风险与 CSP?

A eval 执行字符串的代码时仍处于 with 包装的作用域内
B 'unsafe-eval' 开启后 eval 会被浏览器禁用
C CSP 无法限制 eval 与 new Function
D new Function 在全局作用域构造,其代码读写 window 可绕过沙箱代理 ✓ 正确答案
#

14. CSP 与沙箱,内容安全策略的配置与绕过?

A 配置了 CSP 后即可完全杜绝脚本执行风险,不存在绕过
B 'unsafe-inline' 放行面越小越安全
C 微前端远程资源需在 CSP 中显式声明,严格策略下 import-html-entry 内联执行需要 nonce 等机制配合 ✓ 正确答案
D CSP 只能限制脚本,不能限制样式与请求
#

15. 沙箱逃逸与加固,原型链污染防护?

A JSON.parse 的结果天然免疫原型链污染
B 原型链污染只影响发起攻击的应用自身
C Object.freeze 原型后污染操作会静默成功
D 原型链污染通过修改共享原型影响其他对象,加固可冻结原型、过滤 __proto__ 键并用无原型对象承载数据 ✓ 正确答案
#

16. 沙箱性能,Proxy 拦截对访问频率的影响与优化?

A 懒代理会增加所有属性的初始化成本,性能更差
B Proxy 的 trap 只在首次访问时执行一次
C Proxy trap 每次调用有固定成本,高频访问会放大该开销成为性能瓶颈 ✓ 正确答案
D 沙箱性能优化只能靠换用 iframe,无其他手段
#

17. 沙箱逃逸的检测与审计,加载前后 window 快照 diff、hook Function 构造器与 Proxy 陷阱日志在逃逸监控中的工程实践?

A 快照 diff 只能检测内存泄漏,无法发现逃逸
B window 快照 diff 能发现子应用对全局键的新增与改写,配合白名单降低误报 ✓ 正确答案
C hook Function 构造器可以阻止一切动态执行
D Proxy 陷阱日志是运行时强制能力,无需接入监控大盘