SuperAPI AI 工具集

permissions-policy

安全与审计

查看项目

更新于 10-16 06:07

技能介绍

用途

Permissions-Policy 是一条面向 Web 应用的安全加固规则,属于纵深防御(defense-in-depth)策略的一部分。其核心目标是:当网站被 XSS 攻击攻破后,限制攻击者能够调用的浏览器 API,从而降低安全事件的影响范围。

资料指出,一个被 XSS 攻破且未限制摄像头和麦克风访问权限的网站,可能被静默地录制用户。Permissions-Policy 通过限制哪些浏览器 API 可用,减少攻击者在注入成功后仍能执行的操作。

主要能力

  • 使用 Permissions-Policy 禁用网站未使用的浏览器功能,例如摄像头(camera)、麦克风(microphone)、地理位置(geolocation)、支付(payment)。
  • 语法示例:Permissions-Policy: camera=(), microphone=(), geolocation=(),其中空的 () 表示对所有来源拒绝该功能。
  • 该头部此前称为 Feature-Policy,旧语法已废弃,仅在较旧的浏览器中受支持。
  • 限制未使用的功能可以缩小网站被 XSS 攻破后的影响范围(blast radius)。
  • 第三方 iframe 默认继承页面的限制,除非显式授予其权限。

使用方式

该规则提供三个操作环节:

  1. 检查(Check):检查服务器是否发送 Permissions-Policy 响应头,并审查哪些浏览器功能被允许或拒绝。识别出那些已启用但应用并不需要的高权限功能,例如摄像头、麦克风、地理位置、支付、USB。
  2. 修复(Fix):添加 Permissions-Policy 响应头,禁用网站未使用的所有浏览器功能。可以从 camera=(), microphone=(), geolocation=() 开始,再根据应用实际需要扩展列表。
  3. 解释(Explain):说明 Permissions-Policy 响应头的作用、它如何限制摄像头和地理位置等浏览器 API,以及为什么禁用未使用的功能可以提升安全性。

此外还包含代码审查(Code Review)环节:审查与设置 Permissions-Policy 响应头相关的服务器配置、响应头、表单和集成点,标记违反该规则的具体响应、Cookie 或浏览器行为,并对照接近生产环境的实际响应进行验证。

完整的实现细节、代码示例和针对特定框架的指导,参见 references/rule.md。

适用场景

适用于任何 Web 应用的 HTTP 响应头安全审查,尤其是需要纵深防御加固的场景。当网站包含第三方 iframe 或集成点时,也需考虑权限继承与显式授权的问题。

限制

资料未提供具体的框架配置示例、完整的可用功能列表、浏览器兼容性细节或性能影响等信息。旧版 Feature-Policy 语法已废弃,仅受较旧浏览器支持。