Firefox附加客户端 - 服务器安全性

时间:2011-08-17 03:08:43

标签: firefox-addon

我正在开发一个Firefox附加组件。在附加组件中的某一点,它需要联系我的服务器,给它一个URL,然后服务器将处理URL(这不是一个快速或简单的过程)并发回一个指向结果文件的链接(在Amazon S3上) )。但是,由于Firefox附加组件本质上是开源的,我如何保护对服务器的一次调用不被恶意攻击者发现然后被滥用? (我只希望我的附加组件的用户能够对服务器进行调用...)

我正在考虑使用某种键或其他东西,但因为Firefox附加组件都是开源的,不会真正起作用。我还考虑过编写一个二进制组件,但我几乎没有C ++经验(但也许我可以学习这样简单的东西) - 但是我怎样才能保护对二进制组件的调用呢?另外,我怎样才能保护网络嗅探器等?是否有可能以某种方式在该二进制组件中包含某种加密,以便网络嗅探器无法检测到发送到服务器的内容? (我发现了这个问题:Client-Server security and authentication但是有点过头了。)

2 个答案:

答案 0 :(得分:1)

当你分发一个分机时,你基本上是给人们车钥匙,因此很难阻止他们把车开到兜风。最安全的解决方案是您建议的解决方案:使用二进制组件并使用用户名/密码或PKI证书对连接进行身份验证。如果您使用HTTPS,则连接将被加密。这不是完全安全的(二进制组件可能由一个坚定的黑客进行逆向工程)但它肯定会阻止偶然的攻击。但请注意,实现,构建和维护二进制组件要比JavaScript等效组件更难。

另一种方法是在安装扩展程序时让用户完成一次性注册过程。这甚至可能在后台发生,并且用户将在结束时获得一些凭证(例如PKI密钥对),它们将用于与服务器的后续通信。如果你担心人们过度使用服务器,那么通过扩展程序这样做可能也不会很好。这样,您可以跟踪每个用户的使用情况(通过扩展名或不通过扩展名)并根据需要进行限制。

答案 1 :(得分:1)

最后,我认为你无能为力。您可以在加载项中使用二进制库,并通过js-ctypes调用它(它比二进制XPCOM组件更容易实现和维护)。但没有什么能阻止人们以他们喜欢的方式接受你的扩展并改变它的JavaScript逻辑。你可以通过这样的逻辑使其变得更难:

  • 客户端到服务器:“扩展版本1.2.3想要发出请求。”
  • 服务器到客户端:“把你的chrome:// ...文件,字节M到N,你得到什么SHA1校验和?”
  • 客户端到服务器:“SHA1校验和是......,请处理URL ...现在。”

但这也是防止失败的一切,它只会让你的服务更难以滥用。同样适用于自动注册 - 如果您的分机可以注册,那么攻击者也可以创建一个帐户。