coldfusion salting我的哈希

时间:2011-10-06 00:59:56

标签: encryption hash coldfusion passwords

在ColdFusion中,与将加密客户端和服务器之间的密码的数据库进行用户登录密码比较的最佳方法是什么?

我注意到http://pajhome.org.uk/crypt/md5/index.html

上有一个javascript版本

但是如果没有启用JavaScript,可以为用户做些什么?

1 个答案:

答案 0 :(得分:8)

这些要点并不特别针对coldfusion,但我觉得我必须说明:

  • 执行哈希服务器端。

哈希的目的是让很难弄清楚要发送服务器的内容,以便生成与数据库匹配的字符串。如果您只是将客户端给出的字符串与数据库条目匹配,那么您的目的就会失败。

  • 不要使用MD5。

它坏了。有办法打败它。不要使用它。

  • 如果您担心在前往服务器的途中会泄露密码,请使用TLS。

TLS旨在使客户端与服务器之间的通信对任何其他人都不透明。最大的问题是最近的BEAST攻击,如果你正确实施它将无法正常工作。

  • 使用SHA-256等安全散列。

据我们所知,SHA-256非常安全。最着名的攻击是将时间复杂度降低2位,这不会使攻击变得切实可行。

  • 使用随机盐,每个用户都是唯一的。

用于2 ^ 50位空间的预先计算的彩虹表将需要256 PB的存储空间,而用于2 ^ 256空间的彩虹表将需要更多的存储空间。但是,由于生日问题,可以想象如果你没有为哈希加盐,你的某些用户的帐户可能会受到损害。

  • 哈希多次。大约数千次。

如果您的数据库遭到入侵,哈希可能意味着您的普通用户密码会在几年内找到。如果你有数千次,那将意味着数千年。

其他一些要点,以解决您的错误观念:

  • 加密哈希是单向的。你不能解密它。如果你找到了解密它的实用方法,那么你就会变得富有而且着名。
  • 标准HTTP不安全。任何人都可以窃听和拦截以明文或散列方式发布的密码。如果您的服务器不要求对敏感数据进行加密连接,那么您需要重播攻击(http://en.wikipedia.org/wiki/Replay_attack)。
  • 您可以制作自己的SSL证书。如果您担心您的用户看到“此SSL证书是自签名的!哦,不!”并且被吓跑了,要么没有,要么承担风险,要么咳嗽现金。