检查是否已安装扩展,如果用户删除扩展,则关闭选项卡

hre*_*tic 2 javascript google-chrome google-chrome-extension google-chrome-app

这是我的网站上的工作方式a.com,用户访问我的网站,我b.com使用我的帐户与另一个网站的人交谈,生成链接b.com/somelink并将用户重定向到该链接.

这是问题,这个地址b.com/somelink包含一些私人信息,我想隐藏访问者...因为我不控制那个网站,我不能这样做.

所以我认为最好的选择是浏览器扩展,用户必须在重定向到b.com之前安装扩展.

所以这是我的简单扩展:

的manifest.json

{
  "name": "extname",
  "version": "1.0",
  "description": "extnameExtension!",
  "manifest_version": 2,
  "permissions": [
    "tabs", "http://*/*", "https://*/*" ,  "webNavigation"
  ] ,

  "content_scripts": [
    {

      "matches": ["*://b.com/*"],
      "js": ["contentscript.js"],
      "run_at": "document_start"
    }
  ]

}
Run Code Online (Sandbox Code Playgroud)

contentscript.js

function fireOnReady() {
    document.getElementById('personal-info').innerHTML = 'some dummy data';
}
if (document.readyState === 'complete') {
    fireOnReady();
} else {
    document.addEventListener("DOMContentLoaded", fireOnReady);
}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我有两个问题:

1 - 用户可能会禁用扩展程序并刷新页面b.com/somelink并查看我的个人信息....所以我的解决方案是关闭浏览器选项卡,b.com如果他们删除我的扩展名...有什么方法可以做到这一点?(此链接仅在从我的网站重定向到b.com时可用,因此他们无法在新标签/浏览器中复制/粘贴该链接)

2 - 在我自己的网站上,我怎样才能确保他们在重定向到b.com之前已经安装了我的扩展程序?

**请不要谈论我解释的场景或其他解决方案或......我知道这可能听起来很奇怪,但这不是针对公众用户,而是私人特殊小组谁将安装扩展,如果他们必须,我有兴趣知道即使我找到另一种解决方案,如何使用代码和扩展来执行此操作**

Lou*_*uis 5

您建议的是将用户重定向到包含私人信息的页面,然后当您的扩展程序检测到该页面已加载时,从DOM中清除该信息.无论您询问有关扩展的两个问题,我都不会使用您提出的方法,因为:

  1. 私人信息仍然发送到用户的浏览器,用户仍然可以访问.正如iPirat所提到的,可以使用几乎任何浏览器中的开发人员工具来查看浏览器收到的数据.网络选项卡将包含页面请求,并将显示发送到浏览器的原始HTML,并且您要隐藏的信息将在那里可见.除了不首先发送信息之外,没有解决方法.

  2. 您的扩展程序中的失败可能会泄露敏感数据.您说您不控制显示私人信息的站点,这意味着您无法控制personal-info包含您的私人信息的元素的ID.如果该方的设计者决定将ID更改为personal-user-info,则您的扩展将失败并且私有数据可见.

    这与您的代码中的错误无关.您在某处犯了错字,您的扩展程序无法运行,并且敏感信息对用户可见.

我会重新考虑你的整个方法.确保私人信息永远不会落在用户手中的一种常用方法是让您的前端代码b.com通过您网站上的服务器从第三方网站()获取所需信息(a.com).您的服务器可以从中获取信息,b.com并且仅包括必须传递给用户的内容.