coldfusion salting我的哈希

Dan*_*iel 0 encryption passwords coldfusion hash

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

我注意到http://pajhome.org.uk/crypt/md5/index.html上有一个javascript版本

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

小智 8

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

  • 哈希服务器端.

散列的要点是要弄清楚要发送服务器的内容以便生成与DB匹配的字符串.如果你只是将客户端给出的字符串与数据库条目匹配,那么你就是在挫败目的.

  • 不要使用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证书是自签名的!哦,不!" 并且被吓跑了,要么没有,要么承担风险,要么咳嗽现金.

  • 所有的好处.有一个CF实现你在[Jason Dean的博客文章]中所说的内容(http://www.12robots.com/index.cfm/2008/5/29/Salting-and-Hashing-Code-Example --security系列-44). (2认同)
  • 您也可以使用ColdFusion轻松使用jBcrypt.它不仅可以使散列更有效,而且可以使该过程更容易实现和维护.Marc Esher的这篇文章很好地解释了如何做到这一点.http://blog.mxunit.org/2011/02/hashing-passwords-with-bcrypt-in.html (2认同)