本文主要是介绍Web安全权限策略记录-PPH/CSP/XFO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、前言
- 二、常用策略内容
- 1、Permissions-Policy header
- 2、Content-Security-Policy
- 3、X-Frame-Options
- 三、如何使用策略
- 1、Permissions-Policy header
- 1.1、禁止特定功能的访问
- 1.2、允许特定域名的访问
- 1.3、允许所有域名的访问
- 1.4、允许内嵌iframe的访问
- 2、Content-Security-Policy
- 2.1、允许特定域名 利用iframe 加载本网站
- 2.2、多策略内容
- 3、X-Frame-Options
- 3.1、禁止所有域名以iframe加载
- 3.2、仅同源域名以iframe加载
- 3.3、设置其他域名以iframe加载
一、前言
本文主要用于介绍遇到的
HTTP Permissions-Policy header
和CSP
及XFO
内容,针对其实际运用做出记录,如何运用来巧妙限制脚本并保障网站的安全性
当然也可以直接搜寻 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、允许特定域名的访问
Permissions-Policy: geolocation=(self "https://yourdomain.com")
1.3、允许所有域名的访问
Permissions-Policy: geolocation=*
1.4、允许内嵌iframe的访问
# 默认下,相当于仅能同域名的iframe使用Permissions-Policy: geolocation=*,frame-ancestors 'self'# 允许其他域名的iframe使用,空格分割多个域名Permissions-Policy: geolocation=*,frame-ancestors 'self' https://yourdomain.com
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
2.2、多策略内容
Content-Security-Policy: default-src 'self'; script-src 'nonce-RANDOM_STRING' 'strict-dynamic'; style-src 'self' 'unsafe-inline'
3、X-Frame-Options
3.1、禁止所有域名以iframe加载
X-Frame-Options: DENY
3.2、仅同源域名以iframe加载
X-Frame-Options: SAMEORIGIN
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
这篇关于Web安全权限策略记录-PPH/CSP/XFO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!