Cakephp Security.salt错误地在错误的文件中

时间:2014-02-02 02:01:33

标签: php security cakephp

我在Security.salt参数中安装了以前的Cakephp 2.3.4时犯了一个错误。

我更改了文件Security.salt中的lib/Cake/Utility/Debugger.php个密钥,而不是将它们放在文件app/Config/Core.php中。

现在我的网站正在投入生产,它拥有超过25,000个带密码的用户帐户。

升级到最新版本2.4.5时发现错误。

我现在该怎么办?我应该在lib/Cake/Utility/Core.php再次进行更改吗?

如果我在app/Config/Core.php中进行更改,则用户将无法再连接。

我真的很担心这件事。 这是否代表安全问题?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

据我所知,在core.php中更改它并不好,我个人不建议这样做,假设在安装CakePHP后已经改变了。但是我很担心为什么你试图改变那个文件,因为你有那么多“用户”(对于那个动作)。你应该多读一些关于我认为的蛋糕,可能还有this。虽然它被称为可选配置,但它更像是 “必须执行”配置 ,并且只是在安装后或最多执行,在投入生产之前。

如果您的情况如此,并且您希望更新此安全盐与已经参与网站的许多用户,您可以采用rainbow table方法,并破解您的系统以获取密码而不是隐藏它们。但我建议采用更优雅的方式。

现在,考虑一下Security::hash()函数,您可以这样做:

$myHash = Security::hash($text, 'sha1','my-salt');

假设您正在使用标准哈希算法SHA1,如果您只是将第三个参数传递给true,那么如果某个哈希算法在您的系统上创建了该密码,则会给您相同的哈希值。但如上所述,您可以测试新的盐... 所以,你可以自己做这件事:

  • 继续使用普通网站;
  • 为用户创建一个新表(同一数据库上的副本);
  • 当用户登录您的主站点时,请检查您的用户是否存在于新用户表中, 如果没有,请使用上面的代码添加不同的Salt。
  • 一旦所有(或足够)用户完成此操作,您只需更改Security.salt并交换用户表。

这不是一个非常聪明的方法,但是有一种方法可以解决这个问题而不必过于深入。为了更快地帮助完成这项工作,您可能会向所有用户发送大量电子邮件,并说您需要更改密码以改善网站安全性等等...

在这种特殊情况下,如果您只想更正错误文件中更改的salt密钥,则可以 check it here ,将其复制并粘贴回原位。虽然您可以看到列出的分支(以及唯一的2.x)是2.5,但我已经检查过它与版本2.3.0和2.3.5的值相同,因此,没有合理的解释为什么2.3。 4会有不同的。使用它应该可以准确地回到原来的位置,没有任何问题。

答案 1 :(得分:0)

无法在哈希之间进行转换。这就是重点。一个使用salt和散列来防止密码被读取(并反转!)。 (我知道是一种具有高级数学的方式所有这些,但你在这里寻找实用的解决方案。)

我建议您在这种情况下可以更改Security.salt文件中的core.php

这将有效锁定所有人,但它也会提升你的哈希值,因为你现在有了自己的盐。

现在,执行此操作后,您将更新“登录”页面以说明:

  

“我们已经收紧了服务器的安全性。因此,某些帐户可能已被锁定。如果您在登录时遇到问题,请使用密码重置功能,并使用以下链接”

所以现在每个用户都将重置自己的密码,因此使用新的Salt和hash添加一个密码。

对于你来说,它看起来像一个巨大的负载(25,000),但从用户的角度来看,这是一个小麻烦,只需要解决一次。

由于并非所有用户都会同时登录,因此不会导致服务器过载。

另一个主动方法是发送一份完整解释情况的时事通讯。但是,您可以判断您的受众是谁以及是否对技术细节感兴趣。

在我看来,由于更严格的安全性而锁定帐户总是更好,允许访问失去安全性。 (换句话说......先锁定!稍后再提问!)