繁体   English   中英

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

[英]Client side encryption: Javascript vs Java Applet vs Adobe Air

我正在考虑在我正在开发的Web项目中实现客户端加密。 目的是确保数据对用户是“私有”的,服务器无法解密。

最初,我以为可以在将浏览器中的数据发送到服务器之前使用一些Javascript库对数据进行加密/解密,但是像这样的文章使我确信,在加密和安全性方面,javascript仍然相当“弱”。

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

  1. 没有人(以我的经验)不再使用Java applet,这可能是有充分原因的
  2. 用户需要安装/升级Java(有时可能是不愉快的操作)
  3. 平板电脑/智能手机不存在支持(但是可以通过提供本机应用程序“解决”)
  4. 似乎浏览器倾向于阻止Java并使其难以启用

另一种可能是采用Adobe Air 同样,我可以看到一些麻烦:

  1. 用户需要安装/更新
  2. 似乎对移动设备有一些支持,但是我想知道它是否可以在移动浏览器中工作(我猜是吗?否)
  3. 它在那里仍在积极使用/支持吗? 我注意到Adobe已开源Flex并将其捐赠给Apache,这可能意味着对Flex未来的兴趣不足。

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

javascript真的是图片吗?


编辑:我想实施客户端加密的某些原因(如评论所述):

  1. 用户将存储机密数据,并希望将其尽可能保密。
  2. 如果数据库遭到破坏,则数据泄漏的可能性较小
  3. 我非常重视隐私,并希望将其作为功能提供给我的用户
  4. 更好地防范内部攻击

您可以尝试Java WebStart,它一旦安装就可以作为沙盒Java应用程序运行。 对于移动支持,我想那意味着要在应用商店中创建一个应用。 对于Android,业务逻辑和加密相对容易实现; Android和Java API在很大程度上相似。

JavaScript并非完全无法实现。 但是没有SSL的 JavaScript。 但是,还有很多其他挑战,例如缺少标准化API的随机数生成器。 请注意,无论您尝试哪种解决方案,用户都必须对您的服务有所信任。 在控制代码时,您还可以控制该代码内发生的事情。

不了解Air,否则我会在没有充分理由的情况下安装它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM