同源策略具体限制什么:DOM、网络响应、存储的访问规则各是什么?
围绕“同源策略具体限制什么:DOM、网络响应、存储的访问规则各是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按 DOM 访问、响应读取、Cookie/存储作用域分别说明同源判定与例外。
程序员面试题库第 99 页,收录第 4901–4950 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“同源策略具体限制什么:DOM、网络响应、存储的访问规则各是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按 DOM 访问、响应读取、Cookie/存储作用域分别说明同源判定与例外。
围绕“页面不回显报错和数据时,如何识别与理解布尔型、时间型盲注的危害”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过响应差异与延迟推断数据的原理以建立危害认知,不给出可操作的注入工具用法。
围绕“参数化查询无法绑定表名和 ORDER BY 列名时,如何安全地支持动态排序”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确标识符不能作为参数绑定的限制并给出枚举白名单映射方案。
围绕“参数化查询为什么能根治 SQL 注入,它和字符串转义有什么本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明代码与数据分离、执行计划先定的机制及转义在字符集边界下的失效。
围绕“设计一个必须抓取用户指定 URL 的功能时,如何用白名单与出口隔离防 SSRF”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出域名白名单、解析后校验、禁止重定向跟随、独立出口网段的组合方案。
围绕“SSRF 攻击是如何利用服务端发起请求的能力打到内网资源的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明攻击者控制 URL 后服务端成为跳板访问内网/元数据的路径。
围绕“为什么云环境中的 SSRF 常指向 169.254.169.254 元数据服务,如何防护”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明实例元数据泄露凭证的危害链与 IMDSv2、网络隔离的防护。
围绕“用 IP 黑名单过滤 SSRF 目标为什么会被 DNS 重绑定、进制转换、重定向绕过”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释解析时机与请求时机不一致及非常规 IP 表示导致的黑名单失效。
围绕“引用第三方 CDN 脚本时,SRI(integrity 属性)如何防止 CDN 被篡改后的供应链注入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明哈希校验的工作机制与跨域引用需配合 crossorigin 的要求。
围绕“HttpOnly Cookie 能不能防 XSS,它实际缓解的是什么后果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分「防攻击发生」与「限制攻击收益」,说明 HttpOnly 只阻止脚本读取 Cookie。
围绕“为什么简单替换 <script> 关键字的 XSS 过滤会被编码和畸形标签绕过”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须举出大小写、嵌套、HTML 实体编码等绕过思路说明黑名单的局限。
围绕“在 DOM 操作中 innerHTML 与 textContent 对 XSS 风险的差异是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确哪些 DOM API 会解析 HTML 而哪些只做文本赋值,并给出安全的动态渲染方式。
围绕“为什么 XSS 防御要按 HTML、属性、JavaScript、URL 等不同上下文分别做输出编码”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明同一数据在不同渲染上下文中需要的编码规则不同及原因。
围绕“允许用户提交富文本时,如何用白名单消毒(如 DOMPurify)防止 XSS”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明黑名单过滤为何不可靠以及白名单标签/属性消毒的工作方式。
围绕“存储型、反射型与 DOM 型 XSS 的区别是什么,各自该如何定位与防御”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按数据流向(服务端存储/请求回显/客户端 DOM 写入)区分三类并给出对应的检测点。
围绕“浏览器编译 WebAssembly 为什么能很快进入优化执行”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清格式可验证、分层编译快速启动再热优化的流水线。
围绕“WebAssembly 的 memory.atomic.wait 与 notify 解决什么问题,能在主线程用吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明原子等待/唤醒的同步语义及主线程禁止阻塞等待的限制。
围绕“上线前如何减小 .wasm 文件的体积”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举优化级别、去调试段、wasm-opt 与按需加载手段。
围绕“在前端做图片滤镜时,WebAssembly 相对 Canvas API 直接处理像素的角色怎么划分”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖划分 JS 负责像素进出、WASM 负责重计算内核的协作模式。
围绕“WebAssembly.compile 与 WebAssembly.instantiate 的职责区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分编译产物 Module 可多次实例化、可跨 worker 传递。
围绕“WebAssembly 共享内存上的数据竞争在浏览器里如何发现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ThreadSanitizer 编译插桩与排查思路。
围绕“在浏览器开发者工具里如何调试 WebAssembly”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清源码映射/DWARF 支持下的断点与单步、无符号时的替代手段。
围绕“WebAssembly 调用抛出 RuntimeError: unreachable executed 通常是什么原”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕归纳 trap 来源如断言失败、越界间接调用,及定位到源位置的方法。
围绕“频繁从 JavaScript 调用 WebAssembly 导出函数的开销来自哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖分析跨边界调用与参数编组成本、批量化调用的取舍。
围绕“如何在运行时发现一个 WebAssembly 模块导出了哪些函数和内存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清 Module.exports/imports 反射 API 的用途如动态绑定。
围绕“externref 让 WebAssembly 能直接持有 JavaScript 对象,这对互操作改变了什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明引用类型避免把对象编号塞进内存的折中方案。
围绕“如何检测浏览器是否支持某个 WebAssembly 特性(如 SIMD、线程)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出用最小特征字节码 validate 检测的通用方法与回退构建策略,不列全部特性常量。
围绕“体积较大的 .wasm 文件如何配合缓存与流式编译优化二次加载”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 HTTP 缓存头与 streaming 的组合效果及不能用 IndexedDB 存 Module 的替代。
围绕“什么时候应该用 WebAssembly.Global 在模块与宿主之间共享状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可导入全局值的场景与可变全局的边界。
围绕“Emscripten 生成的 JS 胶水代码都负责什么,能精简吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明胶水层处理加载、内存视图与 API 桥接及裁剪选项,不深入到运行时源码。
围绕“WebAssembly 导出的 i64 参数在 JavaScript 调用时有什么特殊要求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答 i64 必须用 BigInt 传参与接收的原因。
围绕“WebAssembly 模块如何回调 JavaScript 函数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清实例化时通过 importObject 注入函数供 WASM 调用。
围绕“WebAssembly.instantiateStreaming 相比 instantiate 快在哪里,有什么前提”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答边下载边编译的优势及需要正确 MIME 的前提。
围绕“WebAssembly 的线性内存是什么结构,为什么要这样设计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明线性内存是连续可增长的字节数组、模块内按字节寻址。
围绕“如何设计一个在不支持流式编译环境下也能工作的 WebAssembly 加载器”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出 streaming 优先、ArrayBuffer 实例化兜底的加载策略。
围绕“JS 与 WebAssembly 之间的数据拷贝如何成为性能瓶颈,怎么减少”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明进出边界拷贝成本与通过共享视图直接读写的减拷贝手段。
围绕“WebAssembly 的 memory.grow 调用后原有内存视图会发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答 grow 导致原 ArrayBuffer 被 detach、需重新创建 TypedArray 视图。
围绕“从 JavaScript 调用 WebAssembly 为什么容易出现「内存泄漏」式问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 WASM 内存不受 JS GC 管理、需配对调用导出 free。
围绕“WebAssembly 实例化时给 Memory 设置 maximum 有什么实际意义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释最大页数用于预留地址空间与限制内存膨胀,及不设上限的风险。
围绕“编译好的 WebAssembly.Module 怎样传给 Web Worker 使用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 Module 是结构化克隆可传递对象、worker 内直接实例化。
围绕“WebAssembly 越界访问内存会发生什么,为什么不会读到别的网站数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明边界检查与沙箱隔离保证、越界即 trap 的语义。
围绕“JavaScript 怎样把字符串传给只认指针和长度的 WebAssembly 函数”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答编码写入线性内存、传指针加长度、读回解码的完整流程。
围绕“WebAssembly 返回给 JavaScript 的「指针」到底是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明指针只是线性内存中的字节偏移而非宿主地址,JS 须按偏移读 buffer。
围绕“JavaScript 如何读取 WebAssembly 线性内存中的数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清通过 exports.memory.buffer 建 Uint8Array 等视图读取。
围绕“WebAssembly 多线程为什么依赖 SharedArrayBuffer”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释共享线性内存作为线程通信基础,及与 JS 侧共享的关系。
围绕“WebAssembly SIMD 相对标量版本在什么条件下才有加速收益”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可向量化的数据并行循环才受益、检测支持与回退的必要性,不列指令清单。
围绕“WebAssembly 里递归过深报栈溢出,为什么栈大小不好直接调”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明线性内存中栈区固定、编译期调整 STACK_SIZE 的做法。
围绕“优化 WebAssembly 应用启动时间与峰值性能的目标会冲突吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讨论流式编译、模块裁剪、延迟实例化的取舍。
围绕“WebAssembly 的 Table 和 funcref 用于解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释表存放函数引用实现间接调用/函数指针,以及 anyfunc 到 externref 的演进。
围绕“WebAssembly 线程池大小在浏览器里应该如何决定”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出按硬件并发数与任务特征设池大小、避免超额创建 worker 的判断。