Encryption 冷饮腌制我的土豆条

Encryption 冷饮腌制我的土豆条,encryption,hash,coldfusion,passwords,Encryption,Hash,Coldfusion,Passwords,在ColdFusion中,将用户登录密码与数据库进行比较以加密客户端和服务器之间的密码,最好的做法是什么 我注意到有一个javascript版本 但是,如果没有启用javascript,可以为用户做些什么呢?这些要点并不特定于coldfusion,但我觉得我必须说明: 在服务器端执行哈希操作 散列的目的是让服务器很难确定发送什么来生成与数据库匹配的字符串。如果您只是将客户机提供的字符串与DB条目匹配,那么您就失去了目的 不要使用MD5 它坏了。有办法打败它。不要用它 如果您担心密码在通

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

我注意到有一个javascript版本


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

这些要点并不特定于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实现,它实现了您在中所说的内容。您还可以非常轻松地将jBcrypt与ColdFusion结合使用。它不仅会使散列更有效,而且会使该过程更易于实现和维护。Marc Esher的这篇文章非常好地解释了如何做到这一点。关于第一点,这个场景怎么样。。。使用带有一个密钥的SHA-256在浏览器端进行加密,将密码发送到服务器,后端对其进行解密,并使用另一个密钥与存储在数据库中的密码进行比较?为什么?只要使用HTTPS,您就不需要将基于浏览器的加密过于复杂。如果您关心安全性,那么SSL必须是可行的。时期您所描述的场景对情况没有帮助。攻击者需要做的就是截取散列,然后像普通用户一样将其传递给服务器。