2012-10-25 116 views
1

对不起,如果这个问题被问到,但我还没有找到确切的问题。我有HTML格式的文本正在提交。我知道有SSL的SSL,但我不想购买证书。是否有可能以某种方式加密表单数据?我正在考虑两件事:保护HTTP流量免受嗅探

  • 通过javascript散列表格数据 - 事实上,我只想发送密码,所以我不需要知道它的起源价值。
  • RSA - 不确定它是否可以在JavaScript中实现。 你会建议什么?任何其他变体?
+2

“但我不想购买证书”,如果我知道服务所有者会像您一样推理 - 我绝不会使用与该人相关的任何服务。 – Anders

+1

要免费完成此操作,请使用自签名证书。也许有人可以写一个答案来解释如何。 –

回答

3

无论您执行哪种浏览器端加密,都需要使用加密密钥 - 攻击者才能使用这种加密密钥。因此,尽管您的密码将被加密给临时观察者,但针对有针对性的攻击没有额外的安全措施。

散列在这种情况下是无用的,因为散列版本的密码成为用于授权/注册用户的密码。

此问题的唯一解决方案是SSL证书 - 它们非常便宜!

http://en.gandi.net/ssl/grid(无友情链接)

你甚至可以使用一个self-signed certificate(如果你可以教育你的用户相信会出现浏览器警告)。由于自签名证书没有“证书颁发机构”来证明证书是合法采购的(而不是由远程主机在man-in-the-middle attack中提供),因此浏览器(和用户)在解雇证书时非常喧宾夺主他们是“不安全的”。

有一个在Matasano Security在JavaScript安全的好文章:

安全交付的Javascript到浏览器是一个鸡生蛋蛋的问题。

浏览器Javascript对密码学是敌对的。

Javascript的“view-source”透明度是虚幻的。

直到这些问题得到解决,Javascript并不是一个严肃的加密研究环境,并且因此而受到影响。

+0

RSA呢?或者不可能在JavaScript中实现? – seeker

+0

@恳求这不是不可能的,但它是致命的缺陷。查看更新 – Andy

2
  • 散列是一个单向的过程..你不能找到一个散列原始值 。
  • 有一个blowfish encryption library for javascript,但我真的没有看到它的目的,因为(就像Andy在他的回答中所述),用于加密的密钥将以明文形式提供给客户端。

标准(和btw唯一)的方式是https。你可以使用自己的证书启用SSL,不需要购买SSL证书。但是,浏览器可能会警告访问者证书尚未由已知授权机构签署。