IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> chrome extension 谷歌插件 manifest 几个permissions深度解读 v2 v3 版本 -> 正文阅读

[网络协议]chrome extension 谷歌插件 manifest 几个permissions深度解读 v2 v3 版本

参考manifest?v3的全家福配置参数列表

https://developer.chrome.com/docs/extensions/mv3/manifest/

permissions?谷歌文档

https://developer.chrome.com/docs/extensions/reference/permissions/

谷歌建议,在描述页面中要尽量将需要的权限,以及为何需要这些权限详细说明下,这样符合谷歌的要求,又尊重用户,是一个很好的建议

permissions?主要指插件API的一些调用授权

activeTab
alarms
background
bookmarks
browserSettings
browsingData
captivePortal
clipboardRead
clipboardWrite
contentSettings
contextMenus
contextualIdentities
cookies
debugger
dns
downloads
downloads.open
find
geolocation
history
identity
idle
management
menus
menus.overrideContext
nativeMessaging
notifications
pageCapture
pkcs11
privacy
proxy
scripting
search
sessions
storage
tabHide
tabs
theme
topSites
unlimitedStorage
webNavigation
webRequest
webRequestBlocking

host_permissions?与?background?之间的关系

  1. 如果?background?请求的域名是允许跨域的,则不需要在?host_permissions?中配置该域名

  2. 如果?background?请求的域名是跨域的,则必须要在?host_permissions?中追加该域名

{
??"host_permissions":?["*://*.whatsapp.com/*",?"*://*.baidu.com/*"],
}

否则报跨域错误

  1. 允许跨域的域名并且?host_permissions?也添加了,仍然报错,有可能是?https?证书谷歌不认可

实际错误要关掉这个右侧这个详情框,在?status?字段中?hover?查看,发现是证书错误,此时只有配置一个阿里云的?ssl?证书域名,就解决了

v2?的?host_permissions?是和?permissions?混在一起的?效果和v3稍微有点出入,但大体相同

host_permissions?和?request?请求没有关系,也即?background?对于?request?无关系,在?backgroud?中没有跨域的概念,就相当于我们用?python?的?request?去请求任何一个?url?一样,对于?content?scripts?的中跨域请求来说,除非后端允许跨域,否则不能请求,而且必须是?https?协议的,http?协议会被浏览器自动纠正成?https,应该哪里有个配置可以解决这个问题,但暂时还没找到

  1. XMLHttpRequest并在没有跨域限制的情况下获取对这些来源的访问(即使对于从内容脚本发出的请求)(现在已经不能从content?scripts中绕过跨域请求了)

  2. 无需“选项卡”权限即可读取特定于选项卡的元数据的能力,例如对象的url、title和favIconUrl属性tabs.Tab

  3. 以编程方式(使用tabs.executeScript())将脚本注入从这些来源提供的页面的能力

  4. webrequest从这些主机的?API接收事件的能力

  5. cookies只要"cookies"还包括?API?权限,就可以使用?API?访问该主机的?cookie?。

  6. 绕过对主机被指定为完整域或使用通配符的扩展页面的跟踪保护。但是,内容脚本只能绕过对使用完整域指定的主机的跟踪保护。

v3中的host_permissions?是和permissions分离的

读取或修改主机数据的?API,例如cookies、webRequest和tabs。这个key是一个字符串数组,每个字符串都是一个权限请求。

浏览器可能会在安装时提示用户授予扩展访问此主机数据的权限。无论是否提示用户(有可能不提醒,之后提醒),浏览器都允许用户在安装后控制扩展程序的主机权限:根据需要授予或撤销它们。

特性同v2,没有什么变化

  1. 这种重点提出的就是如果想让某个host中执行tabs.executeScript()?必须要获取host_permissions权限;

  2. 主要还是应用在cookie方面,例如获取waplus.io的cookie变化;

  3. content?scripts?脚本注入没有这个权限要求,是直接注入进去的,所以动态注入脚本和直接注入脚本还是有点区别的;

optional_permissions?可选权限的使用

对于权限的时候,还是尽量少的向用户索要,除非万不得已,即使需要也尽可能作为可选权限来想用户所求

interface?Permissions?{
????/**
?????*?Optional.
?????*/
????permissions?:?Manifest.OptionalPermission[];

????/**
?????*?Optional.
?????*/
????origins?:?Manifest.MatchPattern[];
}document.querySelector('#my-button').addEventListener('click',?(event)?=>?{
??//?Permissions?must?be?requested?from?inside?a?user?gesture,?like?a?button's
??//?click?handler.
??chrome.permissions.request({
????permissions:?['tabs'],
????origins:?['https://www.google.com/']
??},?(granted)?=>?{
????//?The?callback?argument?will?be?true?if?the?user?granted?the?permissions.
????if?(granted)?{
??????doSomething();
????}?else?{
??????doSomethingElse();
????}
??});
});
//?下面的意思是作为可选权限,permisssions?和?origins?可以只传一个,
//?两者不是同时存在的?这个一定要在使用中注意
//?此外tabs?是具有一部分host_permissions权限的能力
chrome.permissions.request(permissions:?Permissions):?Promise<boolean>;
interface?Permissions?{
??/**
????*?Optional.
????*/
??permissions?:?Manifest.OptionalPermission[];

??/**
????*?Optional.
????*/
??origins?:?Manifest.MatchPattern[];
}

容易被忽略的v3权限?optional_host_permissions?权限

这个权限是的确被放在?v3?manifest?参数列表中的,但是文档中只字未提,但的确是有用的一个字段,这里表达的意思就是,有些?host_permissions?权限在某些动作触发时,会访问他的数据,这样也能很好地绕过一上来就要?host_permissions?权限的问题。

用法就是?optional_permissions?申请逻辑?+?host_permissions?效果的结合

设计到需要用?host_permissions?的插件?api?都会明显声明自己的需求,例如?tabs,cookies

Cookie

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:17:01  更:2022-05-21 19:17:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 11:13:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码