当前位置: 首页 > news >正文

Web 安全之 Permissions Policy(权限策略)详解

什么是 Permissions Policy(权限策略)?

Permissions Policy 为 web 开发人员提供了明确声明哪些功能可以在网站上使用,哪些功能不能在网站上使用的机制。可以设置一组策略,用于限制站点代码可以访问的 API 或者修改浏览器对某些特性的默认行为。设置 Permissions-Policy 可以在代码库不断演进的同时强制执行最佳实践,同时更安全地组合第三方内容。

Permissions Policy 类似于 Content Security Policy(CSP 内容安全策略),但控制的是功能特性,而不是安全行为。

Permissions Policy 以前被称为 Feature Policy,名称已更改了,HTTP header 的语法也随着更改了,所以如果以前使用了 Feature Policy,需要检查下浏览器的支持情况,<iframe allow="…"> 语法保持不变。

Permissions Policy 用途

首先看几个可以使用 Permissions Policy 的场景:

  • 开发者可以限制或禁止对某些敏感 API 的使用,如摄像头、麦克风、地理位置等,有助于保护用户的隐私,防止恶意网站滥用这些 API 收集用户的个人信息。
  • 可以限制对某些功能强大但存在潜在风险的 API 的访问权限,如iframe、Service Worker、Notification等,可以减少恶意攻击和跨站点脚本等网络安全威胁。
  • 可以用于改善用户体验,例如通过禁用一些音视频自动播放或弹出式广告等,减少对用户的干扰。
  • 可以提高程序的性能,例如项目在窗口中不可见后,停止相关的脚本执行。

如何设置 Permissions Policy

有两种方式来指定 Permissions Policy:

  • 通过在 HTTP 响应头中添加 Permissions-Policy 字段来实现,可以指定一系列权限,每一个权限指定一个名称和相关策略。例如,要禁用Web API 的摄像头访问权限,添加如下 header 内容:
Permissions-Policy:camera=()
  • 通过 <iframe> 的 allow 属性,控制指定的 <iframe> 中的特性。例如允许 iframe 全屏:
<iframe src="https://example.com..." allow="fullscreen"></iframe>

常见的 Permissions Policy 权限

以下是常见的 Permissions Policy 示例:

  • accelerometer:控制加速计访问的权限。
  • autoplay:控制自动播放媒体资源的权限。
  • camera:控制摄像头访问的权限。
  • geolocation:控制地理位置访问的权限。
  • microphone:控制麦克风访问的权限。
  • notifications:控制通知访问的权限。
  • payment:控制支付访问的权限。
  • sync-xhr:控制同步XHR请求的权限。

Permissions Policy 最佳实践

以下是几点使用 Permissions-Policy 的最佳实践:

  • 只授权应用程序所需的最低权限,以避免潜在的风险。
  • 使用 Permissions-Policy 前,务必进行全面的功能性和兼容性测试,确保不会影响应用程序的正常功能。
  • 可以逐步引入和设置 Permissions-Policy,确保安全性的同时减少对现有应用程序的影响。

小结

Permissions Policy 是一种强大而灵活的 Web API 权限控制机制,提供了更精确控制浏览器权限的能力。通过合理设置 Permissions Policy,可以保护用户隐私、提高应用程序的安全性和提供出色的用户体验。关于 Permissions Policy 使用相关的更详细的信息可以参考如下资料:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Permissions_Policy

相关文章:

Web 安全之 Permissions Policy(权限策略)详解

什么是 Permissions Policy&#xff08;权限策略&#xff09;&#xff1f; Permissions Policy 为 web 开发人员提供了明确声明哪些功能可以在网站上使用&#xff0c;哪些功能不能在网站上使用的机制。可以设置一组策略&#xff0c;用于限制站点代码可以访问的 API 或者修改浏…...

【黄啊码】nginx如何设置php运行的

禁止访问 PHP 脚本可以通过 Nginx 服务器配置中的多种方式来实现。以下是其中的一些常见方法&#xff0c;您可以根据实际需求选择合适的方式&#xff1a; 1 禁用 PHP 解析&#xff1a; 在 Nginx 配置中&#xff0c;确保 PHP 脚本无法被解析&#xff0c;从而禁止 PHP 执行。 lo…...

无涯教程-JavaScript - ISPMT函数

描述 ISPMT函数计算在特定投资期间支付的利息。提供此功能是为了与Lotus 1-2-3兼容。 语法 ISPMT (rate, per, nper, pv)争论 Argument描述Required/OptionalRateThe interest rate for the investment.RequiredPerThe period for which you want to find the interest, an…...

LeetCode 面试题 03.05. 栈排序

文章目录 一、题目二、C# 题解 一、题目 栈排序。 编写程序&#xff0c;对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据&#xff0c;但不得将元素复制到别的数据结构&#xff08;如数组&#xff09;中。该栈支持如下操作&#xff1a;push、pop、peek 和…...

构建微服务项目时启动网关服务失败的解决方案

启动网关服务时报“Unable to create the temporary folder: C:\WINDOWS\TEMP\/nio-file-upload”错误。 代码与之前没有任何变化&#xff0c;但就是启动不了&#xff0c;观察错误意思大概是不能创建临时文件夹&#xff1a;C盘下的WINDOWS下的TEMP目录下的nio-file-upload这个东…...

零基础教程:使用yolov8训练无人机VisDrone数据集

1.准备数据集 1.先给出VisDrone2019数据集的下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1e2Q0NgNT-H-Acb2H0Cx8sg 提取码&#xff1a;31dl 2.将数据集VisDrone放在datasets目录下面 2.数据集转换程序 1.在根目录下面新建一个.py文件&#xff0c;取名叫…...

【Mysql专题】使用Mysql做排行榜,线上实例

背景 我们这里有个需求&#xff0c;对存量用户的余额做排行处理&#xff0c;这个实现方式很多&#xff0c;这边介绍的是&#xff0c;通过Mysql直接实现&#xff0c;将排名也直接返回出来。 我知道大家在网上能找到一大把这种实例&#xff0c;我在这里可不是【重复造轮子】。我…...

matlab数据处理: cell table array+datetime

原数据文件.csv matlab xlsread(filename{i},B2:T2881) 会同于Excel最多1048576行 舍弃 a{1,i} xlsread(filename{i},‘B2:T2881’);%读取excel文件,选定区域’B2:G2881’ readcell(filename{i},Range,E2:M2881) 会全部读取 优选 对于日期 yyyy-MM-dd HH:mm:ss.000 matlab cel…...

如何应用运营商大数据精准营销?

如何应用运营商大数据精准营销&#xff1f; 越来越多的企业逐渐觉察到运营商大数据所带来的商业价值&#xff0c;精准营销也被他们用的越来越娴熟。那么&#xff0c;企业的大数据精准营销该如何应用呢&#xff1f;想必是很多资源有限的中小型公司最想了解的。 一 数据驱动运营…...

AJAX学习笔记5同步与异步理解

AJAX学习笔记4解决乱码问题_biubiubiu0706的博客-CSDN博客 示例 前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>演示AJAX同步和异步</title> </head> <body> <script…...

911面试

WebPack分包 webpack分包 ts泛型 ts泛型 优化if-else和switch 优化if-else 左侧固定&#xff0c;右侧自适应 左侧固定&#xff0c;右侧自适应...

【Java基础篇 | 面向对象】—— 继承

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 继承允许一个类继承另一个…...

DELL precision上安装nvidia A4000驱动 cuda cudnn

一、安装驱动 参考这篇文章进行安装Ubuntu安装Nvidia显卡驱动_Kevin__47的博客-CSDN博客 【出现问题】 禁用nouveau后出现黑屏&#xff0c;有几行代码&#xff0c;断线一直在闪 【解决方法】 1、参考这篇文章Ubuntu20.04安装nvidia显卡驱动并解决重启后黑屏问题_ubuntu安装…...

数据结构算法刷题(29)动态规划

思路一&#xff1a;回溯&#xff1a;按照选和不选的判断方式&#xff0c;使用回溯来解决这个问题。 class Solution: def rob(self, nums: List[int]) -> int: n len(nums) #数组的长度 def dfs(i): if i<0: #到达边界条件后 return 0 #返回最大金额是0 res max(dfs(i…...

W11下CMake MinGW配置OpenCV和Qt

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 前几天将cuda版本的opencv给编译成功了&#xff0c;当时用的VS的MSVC&…...

反转字符串 反转字符串 || 反转字符串 |||

思想总结&#xff1a;首先将字符串转变为字符数组&#xff0c;再进行遍历并反转字符。 1.反转字符串 代码&#xff1a; class Solution {public void reverseString(char[] s) {reverse(s,0,s.length); //左闭右开}public static void reverse(char[] ch,int i,int j) { 翻转函…...

XML解析 不允许有匹配 _[xX][mM][lL]_ 的处理指令目标

以上错误是在解析xml参数时候报出的。 我这里错误的原因在于&#xff0c;<?xml version\"1.0\" encoding\"UTF-8\"?>少了个空格&#xff0c;参考下图&#xff1a; 下面一行才是对的。...

【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; list模拟实现 1. 前言2. list类的大致框架与结构…...

Docker安装RabbitMQ集群_亲测成功

先安装Docker Centos7离线安装Docker 华为云arm架构安装Docker RabbitMQ集群模式介绍 RabbitMQ集群搭建和测试总结_亲测 RabbitMQ 有三种模式&#xff1a;单机模式&#xff0c;普通集群模式&#xff0c;镜像集群模式。单机模式即单独运行一个 rabbitmq 实例&#xff0c;而…...

50道基础数据结构面试题

程序员必备的50道数据结构和算法面试题 在本文中&#xff0c;将分享一些常见的编程面试问题&#xff0c;这些问题来自于不同经验水平的程序员&#xff0c;囊括从刚大学毕业的人到具有一到两年经验的程序员。 编码面试主要包括数据结构和基于算法的问题&#xff0c;以及一些诸…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

HTTPS证书一年多少钱?

HTTPS证书作为保障网站数据传输安全的重要工具&#xff0c;成为众多网站运营者的必备选择。然而&#xff0c;面对市场上种类繁多的HTTPS证书&#xff0c;其一年费用究竟是多少&#xff0c;又受哪些因素影响呢&#xff1f; 首先&#xff0c;HTTPS证书通常在PinTrust这样的专业平…...