我正在考虑在我正在开发的Web项目中实现客户端加密。 目标是确保数据对用户“私有”,服务器无法解密。
起初我以为我可以使用一些 Javascript 库来加密/解密浏览器中的数据,然后再将它发送到服务器,但是articles like this one让我确信javascript仍然公平在加密和安全方面,“弱”。
我现在正在考虑使用 Java Applets (我的代码库是Java,这将是一个自然的选择)作为JS代码和服务器端代码之间的“桥梁”,但我可以看到一些陷阱:
- 没人(根据我的经验)正在使用Java applet,这可能是有充分理由的
- 用户需要安装/升级Java(有时可能是一种令人不愉快的操作)
- 平板电脑/智能手机支持不存在(但可以通过提供原生应用来“解决”)
- It seems that browsers tend to block Java并且难以启用它
醇>
另一种可能性是采用 Adobe Air 。再一次,我可以看到一些麻烦:
- 用户需要安装/更新
- 似乎对移动设备有一些支持,不过我想知道它是否适用于移动浏览器(我的猜测?不)
- 那里是否仍在积极使用/支持?我注意到Adobe已经开源Flex并将其捐赠给Apache,这可能是 意味着对Flex的未来缺乏兴趣......
醇>
什么是最好的解决方案?有没有其他选择(也许 Google Dart ?)?客户端加密的最佳做法是什么?
javascript真的不合适吗?
答案 0 :(得分:0)
您可以尝试Java WebStart,它可以在安装后作为沙盒Java应用程序运行。对于移动支持,我想这意味着在应用商店中创建应用。对于Android,业务逻辑和加密相对简单易行; Android和Java API大致相似。
JavaScript并没有完全脱离图片;但是,没有SSL 的JavaScript 。但是还有其他挑战,例如缺少标准化API的随机数生成器。请注意,无论您尝试何种解决方案,用户都必须信任您的服务。当您控制代码时,您还可以控制代码中发生的事情。
不要了解Air,除此之外我不会在没有充分理由的情况下安装它。