处理缺乏散列方法(不同的PHP版本 - 相同的代码)

时间:2012-04-22 12:01:52

标签: php codeigniter hash sha1 sha512

我正在开发一个CMS系统,它将运行我的客户站点,但我遇到了一个我试图避免的情况。 hash()函数需要PHP> = 5.1.2,我显然不能假设所有客户端都运行此函数,因为我不会处理每个人托管。

因此,我选择:

  1. 仅限于使用SHA1 - 安全性较低
  2. 可用时使用SHA512,否则使用SHA1 - 兼容性差 是时候进行服务器升级了
  3. 仅使用SHA512 - 强制客户端尽快升级(坏 - 不是 他们总是可以)
  4. 我很欣赏所有的意见!

2 个答案:

答案 0 :(得分:2)

  

hash()函数需要PHP> = 5.1.2,我显然不能假设所有客户端都运行它,因为我不会处理每个人托管。

真的吗?!

  • PHP 5.2自2006年11月以来
  • PHP 5.3自2009年6月开始
  • PHP 5.4已经推出几周了

运行PHP< 5.1.2表示它至少是(!)6年,因此本身就是一个安全问题。哈希算法或多或少安全的问题不再重要。

关于这个问题:sha1()(含盐)适用于大多数用例,除非您为CIA等编写软件。关键是,即使是咸的md5() - 哈希也不值得在大多数网站上破解。

  

仅使用SHA512 - 强制客户端尽快升级(糟糕 - 并非总是可以)

当他们拒绝更新已有6年历史的软件时,他们无论如何都注定要失败......

答案 1 :(得分:1)

PHP 5.1.2是released in '06。 您可以安全地将其作为运行CMS的要求。如果你的一个客户使用6年前的PHP版本 - 他会遇到比你系统不合适更糟糕的问题。 就像你的CMS在IE6中不能很好地显示出2006年的主浏览器一样。