客户端加密:Javascript与Java Applet对比Adobe Air

时间:2014-07-29 13:54:02

标签: java javascript encryption web air

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

起初我以为我可以使用一些 Javascript 库来加密/解密浏览器中的数据,然后再将它发送到服务器,但是articles like this one让我确信javascript仍然公平在加密和安全方面,“弱”。

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

  
      
  1. 没人(根据我的经验)正在使用Java applet,这可能是有充分理由的
  2.   
  3. 用户需要安装/升级Java(有时可能是一种令人不愉快的操作)
  4.   
  5. 平板电脑/智能手机支持不存在(但可以通过提供原生应用来“解决”)
  6.   
  7. It seems that browsers tend to block Java并且难以启用它
  8.   

另一种可能性是采用 Adob​​e Air 。再一次,我可以看到一些麻烦:

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

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

javascript真的不合适吗?


编辑:我想实现客户端加密的一些原因(在评论中提到):

  1. 用户将存储机密数据,并希望尽可能保密。
  2. 如果数据库遭到入侵,数据泄漏的可能性就会降低
  3. 我非常重视隐私,并希望将此作为一项功能提供给我的用户
  4. 更好地防范内部人员攻击

1 个答案:

答案 0 :(得分:0)

您可以尝试Java WebStart,它可以在安装后作为沙盒Java应用程序运行。对于移动支持,我想这意味着在应用商店中创建应用。对于Android,业务逻辑和加密相对简单易行; Android和Java API大致相似。

JavaScript并没有完全脱离图片;但是,没有SSL 的JavaScript 。但是还有其他挑战,例如缺少标准化API的随机数生成器。请注意,无论您尝试何种解决方案,用户都必须信任您的服务。当您控制代码时,您还可以控制代码中发生的事情。

不要了解Air,除此之外我不会在没有充分理由的情况下安装它。