预设:
high impact
high impact
high impact
high impact
high impact
high impact
high impact
high impact
high impact
功能说明
Permissions-Policy HTTP 头告诉浏览器:你的页面 —— 以及你嵌入的每个 iframe —— 允许使用哪些强大的 Web 功能。摄像头、麦克风、地理定位、传感器、USB、屏幕共享:默认情况下,这些功能对你的源(origin)都可用,只等某个脚本来请求。
本工具把这个头部从手写字符串变成一个结构化的指令编辑器。每张指令卡片对应一个功能 —— 已知功能带有隐私影响徽章(high / medium / low)和一段说明该功能用途的注释 —— 并选择一个允许列表:处处允许(*)、仅同源(self)、彻底禁用(()),或自定义源列表。头部在控件旁边实时自动拼装。粘贴一个已有的头部即可载入并编辑。
使用方法
- 从预设开始 —— All deny(目录中所有功能禁用)、Camera self(
camera=(self))或 Fullscreen *(fullscreen=*)。 - 编辑指令卡片 —— 输入功能名,选择其允许列表(
Off/Self/All/Origins),选Origins时给出一个以空格分隔的源列表。指令可自由增删。 - 粘贴已有头部 —— 展开导入面板,粘贴你当前的
Permissions-Policy值,点 Parse & load 即可载入编辑器(头部名前缀和带引号的源都会被正确处理;格式错误的输入会被报告)。 - 复制或下载 —— 复制头部用于你的服务器 / CDN 配置,或下载为
permissions-policy.txt。 - 分享配置 —— 你的整份指令列表被编码进页面 URL;复制地址即可把确切的策略交给别人。
示例
对一个完全不需要这些 API 的网站的严格默认策略:
camera=(), display-capture=(), geolocation=(), hid=(), idle-detection=(),
microphone=(), serial=(), usb=(), xr-spatial-tracking=()
嵌入一个只在它自己的帧里需要摄像头 + 麦克风的视频合作伙伴:
camera=(https://partner.example.com), geolocation=(), microphone=(https://partner.example.com)
只为自己保留 fullscreen 和 payment,其余全部锁死:
fullscreen=(self), payment=(self)
补充说明
- 实时校验 —— 工具会标记重复指令(头部中只有最后一条生效)、敏感三件套(
camera、geolocation、microphone)上的*(每个源都会收到硬件授权提示),以及目录之外的功能名(拼写错误,或浏览器尚不认识的功能 —— 会被静默忽略)。 - 为什么要把用不到的功能锁死? 被禁用的功能无法被失陷的依赖、恶意广告脚本或被注入的 iframe 重新启用。这还能缩小你的指纹攻击面 —— 传感器和电池 API 是经典的跟踪向量。
- 特性检测仍然有效。 在功能被禁用的情况下调用
navigator.mediaDevices的脚本会得到一个被拒绝的 Promise 而不是授权提示 —— 只在确实需要它的特定 iframe 上设置allow="camera"。 - 这不是 CSP。 Content-Security-Policy 控制可以加载什么内容;Permissions-Policy 控制可以使用哪些硬件/API。两个都要部署。
- 100% 客户端 —— 头部在你的浏览器中构建;任何内容都不会被上传。
- 相关工具: CSP Builder、Basic Auth Generator。