上下文:
- 只有当您的客户端安装了您的特定 Chrome 扩展程序时,您的 Web 服务器才必须提供独家内容。
- 您有两种可能提供 Chrome 扩展包:
- 来自 Chrome 网上应用店
- 从您自己的服务器
问题:
- 有很多解决方案可以让您知道已安装 Chrome 扩展程序:
- 在使用内容脚本加载网页时插入元素。
- 使用Web Requests将特定标头发送到服务器。
- 等等。
- 但是似乎没有解决方案来检查与您的网页交互的 Chrome 扩展程序是否是正版的。
- 实际上,由于任何人都可以查看和复制 Chrome 扩展程序的源代码,因此似乎无法知道当前与您的网页交互的 Chrome 扩展程序是您发布的版本还是克隆版本(并且可能有所改变)由另一个人。
- 您似乎只能知道某些 Chrome 扩展程序正在以“预期方式”与您的网页交互,但您无法验证其真实性。
解决方案?
- 一种解决方案可能是使用 Chrome 扩展包中包含的信息,其他任何人都无法更改或复制这些信息:
- 将 Chrome 扩展程序的 ID 发送到服务器?但是怎么做?
- ID 必须由您和您的 JavaScript 代码发送,并且似乎无法使用“内部”Chrome 功能来完成。
- 因此,如果其他人只是将相同的 ID 发送到您的服务器(某种 Chrome 扩展程序的 ID 欺骗),那么您的服务器会认为他的 Chrome 扩展程序是真实的!
- 使用打包应用程序时提供的私钥?但是怎么做?
- 似乎无法以任何方式以编程方式访问或使用此密钥!
- 将 Chrome 扩展程序的 ID 发送到服务器?但是怎么做?
- 另一种解决方案是使用NPAPI 插件并嵌入 GPG 等身份验证方法。但这种解决方案并不理想,主要是因为其API 文档的“警告”部分很大。
- 还有其他解决方案吗?
笔记
这个问题试图在 Chrome 扩展的 API 中提出一个真正的安全问题:如何在与您的服务交互时检查您的 Chrome 扩展的真实性。如果有任何遗漏的可能性,或者任何误解,请随时在评论中问我。