Web安全权限策略记录-PPH/CSP/XFO

2023-12-03 14:36

本文主要是介绍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 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、允许特定域名的访问

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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/449792

相关文章

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片