身份、注入与嵌入安全
安全设计从“谁让什么数据越过了哪条边界”出发:Cookie 维护会话,XSS 攻击解释器,CSRF 借用浏览器身份,点击劫持利用真实界面,HTTPS 保护运输。它们不能用一个配置统一替代。
核心模型
安全设计从“谁让什么数据越过了哪条边界”出发:Cookie 维护会话,XSS 攻击解释器,CSRF 借用浏览器身份,点击劫持利用真实界面,HTTPS 保护运输。它们不能用一个配置统一替代。
原理与机制
会话是服务端可撤销的身份关系
Cookie 属性限制发送与读取:Secure 限制安全连接,HttpOnly 不让页面脚本直接读值,SameSite 控制同站及特定跨站场景;Domain 扩大主机范围,Path 不是可靠安全隔离边界。同站不同源的子域仍值得警惕。登录或权限提升时轮换会话,服务端撤销旧标识;退出只删除浏览器 Cookie 而保留旧会话授权,重放仍可能成功。HttpOnly 降低令牌被直接盗取的风险,却阻止不了已注入脚本代表用户发请求。
注入发生在数据被重新解释时
纯文本写入 textContent 能让字符串始终保持数据;innerHTML 则重新进入 HTML 解析器。危险输入可能位于属性、URL、事件处理器或脚本,不只有 script 标签,所以编码必须匹配具体上下文。链接还要限制协议和目标,富文本必须经过维护中的净化器与内容白名单,净化后再拼接不可信 HTML 会破坏保证。框架的默认文本转义只保护其正常文本路径,危险 HTML 接口与第三方组件仍需单独审计。
纵深策略必须真的执行
CSP 可用每个响应新生成且不可预测的 nonce 或内容 hash 收紧脚本执行。先 Report-Only 发现合法依赖,再灰度强制并验证真实拦截;没有报告也可能是上报坏了。Trusted Types 在支持环境中将危险注入点收束到策略,但 createPolicy 本身没有净化魔法:原样返回字符串仍危险,需强制指令与受限策略名配合。报告作为不可信诊断输入聚类,不能看到陌生域就自动加入白名单。
请求和界面都可能被借用
CSRF 利用自动携带的认证信息诱导请求,不要求攻击者读到响应。写接口需符合架构的会话绑定令牌、来源校验或受保护请求头方案,再配 SameSite 等纵深防御;固定用户 ID 不是不可预测令牌。点击劫持则可诱导用户操作真实嵌入页面。响应头中的 frame-ancestors 限制谁能嵌入自己,并检查整条祖先链;frame-src 限制自己加载谁,方向相反,meta 或 default-src 不能代替 frame-ancestors。
传输安全不为内容背书
HTTPS 通过 TLS 提供传输机密性、完整性及服务器身份验证,不能证明页面无注入、业务授权正确。HSTS 让已知策略的浏览器在请求前升级 HTTPS,但首次未知访问有边界,预加载带来更长的部署与撤回周期。includeSubDomains 影响所有适用子域,必须先盘点证书与旧服务;子域发 max-age=0 不能抵消父域仍有效的覆盖。混合内容应消除 HTTP 依赖,而不是要求用户关闭安全保护。 上线后还要维护证书续期、新增子域和回滚流程;停止发送 HSTS 头不会让已记住策略的浏览器立即忘记,部署验收必须包含旧客户端状态。
最小示例
javascript示例刻意只允许本站 HTTPS 链接。先移除旧 href,再拒绝非字符串、空输入与无法解析的 URL,因此失败不会遗留上一次链接。文本中的尖括号保持文本,javascript: 也不会得到 href。它只示范文本安全与 URL 许可两个检查,不是富文本净化器;若允许外链,应扩展明确业务名单并独立测试。
环境:现代浏览器;node 为已存在的锚点元素,location 为当前页面位置;策略仅允许本站 HTTPS URL。
核验:已在 Node.js 用模拟锚点和 location 验证合法本站链接、非法 URL、危险协议、外站、空值及旧 href 清除;这是纯逻辑局部验证,未运行真实 DOM 或浏览器安全集成测试。
边界与取舍
边界
- HttpOnly、CORS、POST 和 HTTPS 都不能单独防住 CSRF 或 XSS;需要沿真实攻击路径组合措施。
- CSP nonce 固定复用、Trusted Types 策略原样放行,都可能形成“有配置但无有效防护”。
- frame-ancestors 应由响应头发送;它不继承 default-src,也不等于接口授权。
取舍
- 严格 CSP 可减少注入后果,却可能破坏第三方脚本;以报告、业务回归和分阶段强制降低上线风险。
- 较广 Cookie 域和 HSTS 子域覆盖便于统一部署,却扩大配置影响面;优先最小会话范围,安全头逐步提升。
口述示范
我会先定位攻击入口与可信边界:输出按上下文处理,身份由服务端校验与撤销,伪造请求和嵌入分别治理,再用 CSP、Trusted Types、HTTPS 形成纵深。验收要故意构造失败路径,配置存在本身不是安全证据。
章节练习
参考来源与核验边界
- OWASP:XSS Prevention · 核验 2026-10-04
- OWASP:CSRF Prevention · 核验 2026-10-04
- MDN:Content Security Policy · 核验 2026-10-04
- MDN:Set-Cookie · 核验 2026-10-04
按核验日浏览器安全模型与 OWASP 防御指南;Trusted Types、隐私限制与 CSP 降级行为必须核对目标浏览器,不以单一浏览器成功代替完整验收。
内容版本:2026-10-04.2 · 题目和来源 ID 保持原样,本站不将面经标签解释为企业官方出题或高频保证。