客户端加密:Javascript vs Java Applet vs Adobe Air
Client side encryption: Javascript vs Java Applet vs Adobe Air
我正在考虑在我正在开发的web项目中实现客户端加密。目标是确保数据对用户是"私有的",并且服务器无法解密它。
起初我认为我可以使用一些Javascript库在将数据发送到服务器之前加密/解密浏览器中的数据,但是像这篇文章这样的文章使我相信Javascript在加密和安全方面仍然相当"弱"。
我现在正在考虑使用Java applet (我的代码库是在Java中,这将是一个自然的选择)作为JS代码和服务器端代码之间的"桥梁",但是我可以看到一些陷阱:
另一种可能是采用Adobe Air。再次,我可以看到一些问题:
- 没有人(以我的经验)在使用Java小程序了,这可能是一个很好的理由
- 用户需要安装/升级Java(有时这可能是一个不愉快的操作)
- 平板电脑/智能手机支持是不存在的(但这可以通过提供一个本地应用程序来"解决")
- 似乎浏览器倾向于阻止Java并使其难以启用
- 用户需要安装/更新
- 似乎有一些支持移动,但我想知道它是否会在移动浏览器工作(我的猜测?no)
- 它仍然被积极使用/支持吗?我注意到Adobe已经开源了Flex,并将其捐赠给了Apache意味着对Flex的未来缺乏兴趣…
最好的解决方案是什么?是否有其他选择(也许Google Dart?)?客户端加密的最佳实践是什么?
javascript真的不存在了吗?
编辑:我想实现客户端加密的一些原因(在评论中询问):
- 用户将存储机密数据,并希望尽可能保密。
- 如果数据库被破坏,则数据泄漏的可能性较小
- 我非常重视隐私,并希望为我的用户提供这一功能
- 更好地抵御内部攻击
您可以尝试Java WebStart,它可以在安装后简单地作为沙盒Java应用程序运行。对于手机支持,我想这意味着在应用商店中创建应用。对于Android来说,业务逻辑和加密相对容易完成;Android和Java的API基本相似。
JavaScript并没有完全退出;JavaScript 没有SSL。但是还有很多其他的挑战,比如缺乏来自标准化API的随机数生成器。请注意,无论您尝试什么解决方案,用户都必须对您的服务给予一定的信任。当你控制代码时,你也控制了代码内发生的事情。
我对Air不太了解,除非有很好的理由,否则我是不会安装它的
相关文章:
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常
- Performance: NaCl vs Emscripten
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- Advantages to DOMParser vs template & innerHTML
- JavaScript-===vs===运算符性能
- 从Javascript调用Applet方法
- 使用javascript禁用Applet按钮
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- PhantomJS(vs nightwatch.js)设置cookie错误
- Javascript events: window.event vs argument reference (funct
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- 将文件从Javascript传递到Java Uploader Applet
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- .notion vs.[]notation |插入到文本对象中
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- 客户端加密:Javascript vs Java Applet vs Adobe Air