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

相关文章

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事