我正在使用通过Chrome扩展程序启动的Chrome Native Messaging开发应用程序。
我的问题是:如何确保我提供的主机应用程序真的一样?
我需要确保应用程序通过扩展名调用的真实性。如果我没有阅读注册表的权限或检查某些内容是否已更改,我该如何获得?
答案 0 :(得分:2)
这是一个很好的问题,我的猜测答案是“不幸的是,你不能”。
实施某种类型的加密哈希会很有趣,就像Chrome用来验证扩展文件一样,但这不是一个非常有力的保证。
考虑(所有这些假设):
保护Chrome扩展程序/应用程序非常简单,因为您所依赖的唯一“库”/运行时是Chrome本身(并且您信赖它)。本机应用程序可以依赖于系统上的许多东西(比如已经提到的库),你如何跟踪?
无论如何,这对头脑风暴似乎是一件有趣的事情。如果已经有任何相似内容,请查看Chrome bug tracker,如果没有,请尝试提出功能请求。也许可以尝试一些与Chromium相关的邮件列表来询问开发者。
答案 1 :(得分:1)
我意识到这是一篇较老的帖子,但我认为从我提交的错误中分享Chromium团队的官方回复是值得的:https://bugs.chromium.org/p/chromium/issues/detail?id=514936
可以修改用户计算机上的注册表或FS的攻击者也可以修改chrome二进制文件,因此通过使用chrome的代码进行修改,攻击者可以禁用chrome中实现的任何类型的验证。因此,chrome必须信任FS(以及来自本地机器的任何东西)。
答案 2 :(得分:0)
如果我正确理解了问题,解决方案可能是
重要的是,您的注册号应该是安全的,并且客户端计算机无法从可执行文件中获取它(使用正确的签名可以实现)
由于chrome停止了对Applet的支持,我为chrome中的智能卡读卡器实现了相同的功能
唯一的循环漏洞是,客户端计算机能够在某些工具的帮助下跟踪其发送的每个请求
如果您能够使用某些httpOnly Cookie(客户端计算机无法读取)或使用密码机制使您的服务器可执行通信安全,那么很可能是您可以实现的安全解决方案