这就是我的网站 a.com
中的工作方式,用户访问我的网站,我使用我的帐户与另一个网站 b.com
中的人交谈,生成链接 b.com/somelink
并将用户重定向到该链接。
问题是,这个地址 b.com/somelink
包含一些我想对访问者隐藏的私有(private)信息...因为我不控制该网站,所以我无法控制该网站。
所以我认为最好的选择是浏览器扩展,用户必须在重定向到 b.com 之前安装该扩展。
这是我的简单扩展:
list .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"
}
]
}
内容脚本.js
function fireOnReady() {
document.getElementById('personal-info').innerHTML = 'some dummy data';
}
if (document.readyState === 'complete') {
fireOnReady();
} else {
document.addEventListener("DOMContentLoaded", fireOnReady);
}
工作正常,但我有两个问题:
1 - 用户可能会禁用扩展程序并刷新页面 b.com/somelink
并查看我的个人信息....所以我的解决方案是关闭打开 b.com 的浏览器选项卡
如果他们删除我的扩展...有什么办法可以做到这一点吗? (此链接仅在他们从我的网站重定向到 b.com 时才可用,因此他们不能仅在新选项卡/浏览器中复制/粘贴链接)
2 - 在我自己的网站中,我如何确保他们在将其重定向到 b.com 之前已安装我的扩展程序?
**请不要谈论我解释的场景或其他解决方案,或者...我知道这可能听起来很奇怪,但这不是针对公共(public)用户,而是针对私有(private)特殊团体,如果他们必须的话,他们将安装扩展,我是有兴趣知道如何使用代码和扩展来做到这一点,即使我找到了另一个解决方案**
最佳答案
您的建议是将用户重定向到包含私有(private)信息的页面,然后当您的扩展检测到该页面已加载时,从 DOM 中清除该信息。无论您提出有关扩展的两个问题,我都不会使用您提出的方法,因为:
私有(private)信息仍然发送到用户的浏览器,并且用户仍然可以访问。如iPirat提到,可以在几乎任何浏览器中使用开发人员的工具来查看浏览器接收的数据。网络选项卡将包含对该页面的请求,并且将显示发送到浏览器的原始 HTML,并且您要隐藏的信息将在那里可见。没有解决此问题的方法,除了首先不发送信息之外。
您的扩展程序出现故障可能会暴露敏感数据。您说过您无法控制显示私有(private)信息的网站,这意味着您无法控制包含您的私有(private)信息的元素的
personal-info
ID。如果该方的设计者决定将 ID 更改为personal-user-info
,那么您的扩展就会失败,并且私有(private)数据可见。这与代码中的错误无关。您在某处输入错误,您的扩展程序无法运行,并且敏感信息对用户可见。
我会重新考虑你的整个方法。确保私有(private)信息永远不会落入用户手中的一种常用方法是让您的前端代码通过以下方式从第三方网站 (b.com
) 获取所需的信息:您网站上的服务器 (a.com
)。您的服务器可以从 b.com
获取信息,并仅包含必须传递给您的用户的信息。
关于javascript - 检查是否安装了扩展,如果用户删除扩展则关闭选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859711/