当前位置:   article > 正文

Web安全权限策略记录-PPH/CSP/XFO_permissions-policy header

permissions-policy header

一、前言

本文主要用于介绍遇到的 HTTP Permissions-Policy headerCSPXFO内容,针对其实际运用做出记录,如何运用来巧妙限制脚本并保障网站的安全性
当然也可以直接搜寻 MDN 来了解更为直观,这里只讨论使用到的内容

Tips: 如果不生效,详情参考对应策略是否于当前测试浏览器中兼容

二、常用策略内容

这部分是关于安全策略头的可选,但它不是所有的选项,只有我们经常使用的值

1、Permissions-Policy header

权限相关限制内容

指令备注
geolocation管理通过浏览器获取位置MSG
syn-xhr管理是否允许异步调用,说白了是XMLHttpRequest
microphone管理是否允许调用麦克风
camera管理是否允许调用视频
magnetometer管理是否允许调用陀螺仪相关内容,如果做了侦测相关脚本建议开启
gyroscope管理是否允许调用陀螺仪相关内容,角度相关的内容
fullscreen管理是否允许调用系统的全屏接口

2、Content-Security-Policy

这里可以限定加载的内容资源,仅允许特定网站加载内容

指令备注
default-src默认基础地址,其他的策略也是默认此设置来源值
connect-src限制连接的来源值
frame-ancestors允许特定父类页面加载的域名,以iframe的模式加载本页面
worker-src限制类worker脚本的有效源头
style-src指定样式表的有效源
script-src指定JavaScript 的有效源

3、X-Frame-Options

用来限制特定网站以iframe加载本页面,多用于兼容IE中 CSP不足的部分

取值备注
DENY意味着禁止所有网站加载
SAMEORIGIN意味只允许同源访问
ALLOW-FROM origin允许特定域名访问

三、如何使用策略

首先说明 ,这里的策略一般都是针对其他嵌入内容的,对本网站的默认都是允许的。

1、Permissions-Policy header

取值备注
()意味着禁止
(self)意味只允许同源访问
*允许所有域名访问

1.1、禁止特定功能的访问

# 单策略
Permissions-Policy: geolocation=()
# 多策略
Permissions-Policy: geolocation=(),fullscreen=()
  • 1
  • 2
  • 3
  • 4

1.2、允许特定域名的访问

Permissions-Policy: geolocation=(self "https://yourdomain.com")
  • 1

1.3、允许所有域名的访问

Permissions-Policy: geolocation=*
  • 1

1.4、允许内嵌iframe的访问

# 默认下,相当于仅能同域名的iframe使用
 Permissions-Policy: geolocation=*,frame-ancestors 'self'
 # 允许其他域名的iframe使用,空格分割多个域名
 Permissions-Policy: geolocation=*,frame-ancestors 'self' https://yourdomain.com 
  • 1
  • 2
  • 3
  • 4

2、Content-Security-Policy

2.1、允许特定域名 利用iframe 加载本网站

# 单个域名的iframe使用
 Content-Security-Policy: frame-ancestors 'self' https://yourdomain.com
 # 空格分割多个域名
 Content-Security-Policy: frame-ancestors 'self' https://yourdomain.com https://yourdomain2.com
  • 1
  • 2
  • 3
  • 4

2.2、多策略内容

 Content-Security-Policy: default-src 'self'; script-src 'nonce-RANDOM_STRING' 'strict-dynamic'; style-src 'self' 'unsafe-inline'
  • 1

3、X-Frame-Options

3.1、禁止所有域名以iframe加载

X-Frame-Options: DENY
  • 1

3.2、仅同源域名以iframe加载

X-Frame-Options: SAMEORIGIN
  • 1

3.3、设置其他域名以iframe加载

更多的域名,以空格分隔

# 单域名& 同源
Content-Security-Policy: frame-ancestors 'self' https://trusted-domain.com
# 多域名 & 同源
Content-Security-Policy: frame-ancestors 'self' https://trusted-domain1.com https://trusted-domain2.com
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/437141
推荐阅读
相关标签
  

闽ICP备14008679号