客户端加密:Javascript vs Java Applet vs Adobe Air

Client side encryption: Javascript vs Java Applet vs Adobe Air

本文关键字:vs Applet Adobe Air Java 客户端 Javascript 加密      更新时间:2023-09-26

我正在考虑在我正在开发的web项目中实现客户端加密。目标是确保数据对用户是"私有的",并且服务器无法解密它。

起初我认为我可以使用一些Javascript库在将数据发送到服务器之前加密/解密浏览器中的数据,但是像这篇文章这样的文章使我相信Javascript在加密和安全方面仍然相当"弱"。

我现在正在考虑使用Java applet (我的代码库是在Java中,这将是一个自然的选择)作为JS代码和服务器端代码之间的"桥梁",但是我可以看到一些陷阱:

  1. 没有人(以我的经验)在使用Java小程序了,这可能是一个很好的理由
  2. 用户需要安装/升级Java(有时这可能是一个不愉快的操作)
  3. 平板电脑/智能手机支持是不存在的(但这可以通过提供一个本地应用程序来"解决")
  4. 似乎浏览器倾向于阻止Java并使其难以启用
另一种可能是采用Adobe Air。再次,我可以看到一些问题:
  1. 用户需要安装/更新
  2. 似乎有一些支持移动,但我想知道它是否会在移动浏览器工作(我的猜测?no)
  3. 它仍然被积极使用/支持吗?我注意到Adobe已经开源了Flex,并将其捐赠给了Apache意味着对Flex的未来缺乏兴趣…

最好的解决方案是什么?是否有其他选择(也许Google Dart?)?客户端加密的最佳实践是什么?

javascript真的不存在了吗?


编辑:我想实现客户端加密的一些原因(在评论中询问):
  1. 用户将存储机密数据,并希望尽可能保密。
  2. 如果数据库被破坏,则数据泄漏的可能性较小
  3. 我非常重视隐私,并希望为我的用户提供这一功能
  4. 更好地抵御内部攻击

您可以尝试Java WebStart,它可以在安装后简单地作为沙盒Java应用程序运行。对于手机支持,我想这意味着在应用商店中创建应用。对于Android来说,业务逻辑和加密相对容易完成;Android和Java的API基本相似。

JavaScript并没有完全退出;JavaScript 没有SSL。但是还有很多其他的挑战,比如缺乏来自标准化API的随机数生成器。请注意,无论您尝试什么解决方案,用户都必须对您的服务给予一定的信任。当你控制代码时,你也控制了代码内发生的事情。

我对Air不太了解,除非有很好的理由,否则我是不会安装它的