Skip to content

参考

基于 Web 现代标准 · 核于 2026-07

速查

  • CSP 指令四类:fetchdefault-src 兜底)/ documentbase-uri/sandbox/require-trusted-types-for)/ navigationform-action/frame-ancestors)/ reportingreport-uri 遗留 → report-to
  • strict CSP 配方script-src 'nonce-…'(或 hash)+ 'strict-dynamic' + object-src 'none' + base-uri 'none'——不写域名白名单
  • meta 下发 CSP 四不灵:frame-ancestorssandboxreport-urireport-to;Report-Only 头也无 meta 形式
  • Trusted Typesrequire-trusted-types-for 'script' 后 sink 只收 TrustedHTML/Script/ScriptURLBaseline 2026-02 Newly available;tinyfill 一行兜老浏览器
  • SRIintegrity="sha256/384/512-…",跨域必须 CORS + crossorigin;不匹配 = 网络错误;Integrity-Policy 头可强制全站脚本带 integrity
  • 纵深四层:renderer 内检查 → 站点隔离 → OS 沙箱 → browser 进程终审;CORB/ORB 拦跨站 HTML/XML/JSON 进错进程
  • iframe sandbox空值最严格(不透明源 + 全禁);同源 + allow-scripts + allow-same-origin = 可自拆沙箱;弹窗默认继承限制
  • 点击劫持:X-Frame-OptionsDENY/SAMEORIGINALLOW-FROM 已废且致整头被忽略)→ frame-ancestors 'none'/'self'/来源列表;并存时 CSP 优先;两者 meta 均无效
  • 安全上下文 = https:///wss:// + 本机投递(127.0.0.1/localhost/*.localhost/file://);iframe 看整条祖先链,弹窗只看自己顶层;检测用 isSecureContext
  • 混合内容二分:可升级(img/audio/video src、CSS 图像 → 自动升 https)vs 可阻断(script/样式/iframe/fetch/字体/srcset → 直接拦);IP 主机拦而不升block-all-mixed-content 已废弃
  • Permissions Policy allowlist:* / () / self / src(iframe 默认)/ "源" / "https://*.example.com"(不匹配裸域);响应头 × iframe allow 取交集
  • LNAlocal-network + loopback-network 权限(Chrome 142 起),仅安全上下文,授权后本地目标豁免混合内容;PNA 预检方案已搁置
  • Fetch MetadataSec-Fetch-Sitesame-origin/same-site/cross-site/none)+ Mode/Dest/User,Baseline 2023-03,服务端资源隔离策略的依据

一、CSP 指令表

类别指令管什么 / 备注
fetchdefault-src所有 fetch 指令的回退
fetchscript-src-elem/-attr脚本来源 / 元素与内联属性细分
fetchstyle-src-elem/-attr样式来源
fetchimg-src / font-src / media-src图片 / 字体 / 音视频
fetchconnect-srcfetch、XHR、WebSocket 连接目标
fetchobject-src<object>/<embed>——建议恒为 'none'
fetchframe-src / worker-srciframe 源 / Worker 脚本源(child-src 已废弃)
fetchmanifest-src / fenced-frame-srcPWA manifest / 围栏帧
documentbase-uri限制 <base>——建议 'none'
documentsandbox以沙箱方式渲染本文档
documentrequire-trusted-types-for / trusted-typessink 强制收 Trusted 类型 / 限定策略名
navigationform-action表单可提交到哪
navigationframe-ancestors谁能嵌我(防点击劫持)
reportingreport-uri(废弃)→ report-to违规上报(配 Reporting-Endpoints 头)
杂项upgrade-insecure-requests全部子请求升 https
杂项block-all-mixed-content(废弃)勿再使用

源表达式:'none' / 'self' / host(example.com*.example.org)/ scheme(https:data:)/ 'nonce-…' / 'sha256|384|512-…' / 'strict-dynamic' / 'unsafe-inline' / 'unsafe-eval'(后两者慎用)。

二、iframe sandbox 属性表

Token放行风险备注
(空值)什么都不放行最严格;不透明源、全能力禁用
allow-scripts执行脚本allow-same-origin 同给且内容同源 → 可自拆沙箱
allow-same-origin保留真实源(存储/Cookie/同源 API)缺省时为不透明源,永远同源失败
allow-forms表单提交缺省时提交静默失败
allow-popupswindow.open/target="_blank"弹窗默认继承沙箱限制
allow-popups-to-escape-sandbox弹窗不继承沙箱广告落地页场景标配
allow-modalsalert/confirm/prompt/print、<dialog>——
allow-downloads触发下载——
allow-top-navigation导航顶层可把用户整页带走,慎给
allow-top-navigation-by-user-activation同上但需用户手势更安全的替代
allow-top-navigation-to-custom-protocols顶层导航到自定义协议allow-popups/allow-top-navigation 连带激活
allow-orientation-lock / allow-pointer-lock / allow-presentation锁方向 / 锁指针 / 演示会话——
allow-storage-access-by-user-activationStorage Access API 申请 Cookie——

配套:allow 属性(Permissions Policy 委托)、credentialless(无凭证临时上下文,配合 COEP)、CSP sandbox 指令(响应头版,防「直接访问无沙箱」盲区)。

三、强能力 API 门控表(安全上下文)

用途门控 API(节选)
离线与消息Service Workers、Push、Notifications、Background Sync/Fetch
媒体采集getUserMedia()、Screen Capture、Audio Output Devices
定位与传感Geolocation、Generic Sensor(加速度/陀螺仪/磁力)、设备方向与运动
剪贴板与文件异步 Clipboard、File System API
密码学与凭证Web Crypto(crypto.subtle)、WebAuthn、Credential Management、WebOTP
硬件直连WebUSB、Web Bluetooth、WebHID、Web Serial、Web NFC、Web MIDI
支付与系统Payment Request、Web Share、Storage API、Screen Wake Lock、Idle Detection、registerProtocolHandler()
图形与传输WebGPU、WebCodecs、WebTransport、WebXR

判定回顾:https:///wss://http://127.0.0.1http://localhosthttp://*.localhostfile:// 为安全;iframe 需整条祖先链安全;弹窗按自身顶层判定;window.isSecureContext 检测。

四、混合内容分类表

类别资源浏览器行为
可升级 upgradable<img src>(不含 srcset)、CSS 图像、<audio src><video src><source>自动改写为 https 重试
可阻断 blockable<script><link> 样式、<iframe>fetch/XHR、非图像类 CSS url()(如 @font-face 字体)、<object data>sendBeaconsrcset/<picture>、一切新类型直接阻断
例外http:// + IP 主机拦而不升(正规出口走 LNA 权限)

工具位:CSP upgrade-insecure-requests(连可阻断类一起升);旧「主动/被动 + 仅警告」模型已退场;block-all-mixed-content 已废弃。

五、Permissions Policy 常用指令表

指令管什么被禁症状
camera / microphonegetUserMedia 视频/音频拒绝 NotAllowedError
geolocation定位回调收 PERMISSION_DENIED
fullscreenrequestFullscreen()拒绝 TypeError
autoplay媒体自动播放play() Promise 拒绝
display-capturegetDisplayMedia() 录屏NotAllowedError
paymentPayment RequestSecurityError
usb / bluetooth / hid / serial / midi硬件直连各 API拒绝/SecurityError
web-sharenavigator.share()拒绝
picture-in-picture / screen-wake-lock / idle-detection / gamepad画中画 / 常亮 / 空闲检测 / 手柄各自拒绝
publickey-credentials-get / -createWebAuthn 登录/注册(跨 iframe 委托常用)拒绝
storage-accessStorage Access API拒绝
local-network / loopback-network(别名 local-network-accessLNA 内网/本机请求请求失败
encrypted-media / xr-spatial-tracking / accelerometerEME / XR / 传感器各自拒绝

allowlist:* / () / self / src(iframe allow 默认值)/ "源"(头里带引号,allow 属性里不带)/ "https://*.example.com"(不匹配裸域);头与 allow 属性取交集。头自身 not Baseline,指令支持度以 BCD 为准。

六、安全响应头总表

作用状态 / 去处
Content-Security-Policy-Report-Only代码与资源加载白名单、Trusted Types 开关现行 · CSP 基础
Reporting-Endpoints具名上报端点(配 report-to现行 · 取代 Report-To
X-Frame-Options防嵌入(DENY/SAMEORIGIN)遗留兜底 · frame-ancestors 优先
Permissions-Policy-Report-Only强能力授权目录现行(not Baseline)· 能力与元数据防护
X-Content-Type-Options: nosniff禁 MIME 嗅探,助 CORB/ORB现行 · 数据接口必配
Integrity-Policy-Report-Only强制子资源带 integrity新锐 · 防注入三件套
Referrer-PolicyReferer 泄露控制细节见网络章 · HTTP 头部
Strict-Transport-Security强制 HTTPS网络章 · HTTPS 与 TLS
Cross-Origin-Opener-Policy / -Embedder-Policy / -Resource-Policyopt-in 跨源隔离三件套网络章 · SameSite 与跨源隔离
Sec-Fetch-Site/Mode/Dest/User(请求头)来源元数据,服务端隔离依据Baseline 2023-03

权威链接

相关页