网页用不到的摄像头和定位能力,怎么在响应头里默认关掉

📅 2026-10-11 👁️ 0

网页用不到的摄像头、麦克风和定位能力,可以在 Permissions-Policy 这个响应头里默认关掉。它的作用机制是给每条指令设定一个允许名单,文档本身以及文档里嵌套的每一个框架都按这份名单来判断能不能使用对应功能。把站点的默认名单收紧到「谁都不给」,是缩小浏览器能力暴露面最直接的一层。

默认名单只有三种取值

按文档说明,每条指令都有一份默认允许名单,取值始终是三种之一:星号表示任何来源都允许,self 表示仅同源,none 表示默认谁都不给。也就是说,写这份头的本质不是「关掉某个功能」,而是把每条指令的默认名单从宽改成窄。

下面这张表把常见指令按「页面到底用不用得上」分开列,便于逐项判断该给哪一档:

能力类别 典型指令 内容站常见的名单
硬件采集 摄像头、麦克风 无相关功能时给空名单
位置信息 定位 门店定位一类页面才需要给同源
画面捕获 屏幕共享 一般给空名单
全屏与自动播放 全屏、自动播放 视频类页面按需给同源
跨站请求 通配子域相关指令 未使用时给空名单

嵌套框架为什么会被父页面卡住

文档里有一条经常被忽略的前提:框架要启用某项功能,它的允许来源必须同时出现在父页面的允许名单里。这意味着父页面名单是上限,子框架拿不到超出上限的授权。

内容站上的第三方组件正是走这条路:嵌入的验证码组件、地图组件、播放器都嵌在框架里。如果为了收紧名单把父页面设成空,这些组件就会直接失效。实践中的顺序应当是先确定整站可接受的最宽范围写进响应头,再在需要更窄的框架上用 allow 属性指定它自己需要的那个子集。

allow 属性只能收窄,不能放宽

这是第二条边界:框架上的 allow 属性用来在父页面允许的范围内进一步收窄,而不是给子页面追加权限。父页面没给的授权,写再多属性也不会出现。

排查时这一点最容易误判。组件报「浏览器拒绝了该能力」,先看的是父页面响应头里的名单,而不是组件文档里的参数写法。

这一头和站内已有防护不重叠

AnQiCMS 这类系统在输入侧已有防护,敏感词过滤与针对 SQL 注入、XSS 的过滤逻辑处理的是内容层面的问题;Permissions-Policy 处理的是浏览器功能调用权限,属于「页面能不能访问设备能力」这一层。两者都不越界:收紧能力名单不能替内容做净化,内容过滤也不会让越权的框架调用失败。

表单里接了验证码组件的站点要注意,收紧名单之后的验证顺序应当是:先在一个干净的浏览器实例里确认组件仍能正常加载与提交,再确认后端依旧对提交做校验。人机验证组件在页面上是否可用属于浏览器侧,服务端仍然要独立判断这一次提交是否合法,不能因为页面已经有组件就默认通过。

常见问题

问:一条指令都不写会怎样? 答:各指令按其默认允许名单运行,而不同指令的默认档并不一致。逐项写明是把行为显式化,避免依赖各功能的默认设置。

问:只给同源是不是更安全? 答:同源只是三档之一,适用于只有本站脚本会调用该能力的情况。若确实没有任何场景用到,空名单比同源更窄。

问:改了头之后为什么有的页面还是弹权限? 答:该页面在名单里被允许了,或响应头没有覆盖到这条路径。逐路径核对下发位置比只在主站加一条更稳。

相关文章

页面因合规要求下架时返回 451,和直接给 404 有什么不一样

因合规要求下架的页面返回 451 还是 404,区别不在页面是否可达,而在状态码把不可用的原因写在了哪一层。本文说明 451 的语义边界、责任方说明该写在响应体还是链接里,以及下架页面在站点地图与内容审核流程中的处理方式。

2026-10-11

开了强制跳HTTPS之后想收回来,进预加载名单的门槛是什么

想把站点的强制跳 HTTPS 收回来,得先分清两层:响应头只对已访问过的浏览器生效,进入预加载名单后门槛是有效期至少一年且必须包含子域。本文说明两者的判定条件、撤销时为什么必须走安全请求,以及站内改配置时该动哪一层。

2026-10-11

上传目录为什么要禁止类型嗅探,两类Web服务器的配置方式有什么差别

上传目录要单独加禁止类型嗅探的响应头,是因为浏览器默认会按内容推断类型,被上传的文件因此可能被当成脚本执行。禁止后浏览器只按声明的类型处理,脚本与样式类请求类型不匹配时会被直接阻止。本文对比 Apache 与 Nginx 在下发这条规则上的差别,并给出部署时的核对顺序。

2026-10-11

评分标准换了大版本,两条公告的严重度还能不能直接比

漏洞评分标准从 3.1 换到 4.0 之后,两条公告给出的分数不能简单横向比较。定性分档的区间在版本之间保持兼容,零到十分仍按四档划分,但评估范围不含经济损失。本文说明分数与分档是两层、跨版本比什么,并落到自家一次高危修复的跟进动作。

2026-10-11

大附件断点续传下载靠哪个请求头,服务端不支持时会返回什么

断点续传靠的是请求头里的 Range,配合响应头的 Accept-Ranges 判断支持情况。支持范围请求的服务器对有效区间返回 206,无效区间返回 416;不支持的服务器会直接忽略这个请求头并返回整份 200。本文说明判定方法、字节偏移写法与单段区间的额外好处。

2026-10-11

内容系统的安全版本一次修掉多项问题,报告方里出现 AI 研究机构,说明什么

一份内容系统的安全发布说明里,多项修复的报告方出现了 AI 研究机构与安全审计公司。这更像是漏洞发现环节的分工在变:辅助审计开始进入披露流程。本文按修复项拆开读这份公告,并给出站点跟进时要核对的三处。

2026-10-11

开源内容系统提前几天挂出安全补丁预告,这几天运维要做哪几件事

安全补丁预告只给时间窗口和风险级别,不给漏洞细节。这几天能做的准备因此很具体:确认模块是否在范围内、把数据与静态文件备份到位、在副本上演练升级路径、准备好发布当天的核对清单,并预留回退与复核的时间。

2026-10-11

表单模块的安全公告只覆盖两段版本区间,站点是先升级还是先关提交功能

一条表单模块的安全公告给出两段受影响区间和两个修复版本,处置顺序应当由所在分支与暴露面决定:能立即升到对应修复版本就先升,升级需要排期时再考虑临时关闭对外提交入口,并记录关闭范围与恢复条件。

2026-10-11