首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么具有特定密钥声明的扩展名可以访问chrome:// page?

为什么具有特定密钥声明的扩展名可以访问chrome:// page?
EN

Stack Overflow用户
提问于 2016-08-30 01:26:17
回答 1查看 67关注 0票数 0

我们知道,默认情况下,chrome扩展不能访问chrome://页面,如chrome://extensionschrome://settings。(当然,我们可以更改chrome://flags/#extensions-on-chrome-urls标志,但是,,下面的问题是基于没有更改默认标志的问题)。

最近,我碰巧发现ChromeVox (由chrome.google.com提供)可以在所有页面中很好地工作,包括chrome://页面。我检查了这个扩展的源代码,并发现只要我们在manifest.json中为添加了下面一行扩展,扩展就可以在chrome://页面中很好地工作。

代码语言:javascript
复制
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"

因此,看来chrome有类似于白名单的东西,允许特定的扩展来打破默认的限制。我说的对吗?是否有官方指南来澄清这种行为?

附录:

下面是一个示例扩展,您会发现在key中,控制台甚至在chrome://extensions页面中也会输出key;但是,一旦删除了key,什么都不会发生。

manifest.json:

代码语言:javascript
复制
{
  "manifest_version": 2,
  "name": "Test",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": [
        "<all_urls>"
      ],
      "js": [
        "content.js"
      ]
    }
  ],
  "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"
}

content.js:

代码语言:javascript
复制
console.log('test');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 07:55:19

  1. "key"属性在manifest.json唯一的定义扩展的ID中以加密形式出现。
  2. 一些谷歌扩展是不公平的(?) 白化的ID在源代码中的铬。 在本例中,ChromeVox: scripting_whitelist_.push_back(extension_misc::kChromeVoxExtensionId); 然后检查这个白名单,看看扩展在PermissionsData::CanExecuteScriptEverywhere中是否可以在任何地方运行,在CheckRestrictedUrls中可以访问这个扩展,在这里我们可以看到受限的方案:chrome://chrome-extension://chrome-debugger://
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39217503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档