1

抱歉,如果有人问这个问题,但我还没有找到确切的问题。我有以纯文本形式提交的 HTML 表单。我知道有带有 SSL 的 HTTPs,但我不想购买证书。是否有可能以某种方式加密表单数据?我在想两件事:

  • 通过 javascript 散列表单数据 - 事实上我只想发送密码,所以我不需要知道它的原始值。
  • RSA - 不确定它是否可以在 javascript 中实现。你有什么建议?还有其他变种吗?
4

2 回答 2

3

无论您执行何种浏览器端加密,都需要使用加密密钥——攻击者可以使用该密钥。因此,虽然您的密码将对不经意的观察者进行加密,但没有针对有针对性的攻击提供额外的安全性。

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

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

http://en.gandi.net/ssl/grid(无附属链接)

您甚至可以使用自签名证书(如果您可以教育您的用户相信将出现的浏览器警告)。由于自签名证书没有“证书颁发机构”来证明证书是合法获得的(例如,不是由远程主机在中间人攻击中提供的)浏览器(和用户)他们将他们斥为“不安全”时非常大声。

Matasano Security上有一篇关于 Javascript 安全的好文章:

将 Javascript 安全地传送到浏览器是一个先有鸡的问题。

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

Javascript 的“查看源代码”透明度是虚幻的。

在这些问题得到解决之前,Javascript 并不是一个严肃的加密研究环境,并且会因此而受苦。

于 2012-10-25T11:56:27.523 回答
2
  • 散列是一种单向过程。您无法从散列中找到原始值。
  • 有一个用于 javascript 的河豚加密库,但我真的看不出这样做的目的,因为(就像安迪在他的回答中所说的那样)您用于加密的密钥将以发送给客户端的明文形式提供。

执行此操作的标准(并且仅限 btw)方法是 https。您可以使用自己的证书来启用 ssl,无需购买。但是.. 浏览器可能会警告访问者证书尚未由已知机构签署。

于 2012-10-25T11:56:22.803 回答