【问题标题】:Hash for install tool password is not constant安装工具密码的哈希值不是恒定的
【发布时间】:2016-08-18 14:58:25
【问题描述】:

我在安装 Typo3 6.2.6 的工具密码时遇到了一个奇怪的问题

我认为的密码不再有效。 所以我试图改变它,但它没有奏效。 奇怪的是,总是当我在输入字段中输入新密码让 TYPO3 为我计算一个新的哈希时,我得到一个不同的哈希。

LocalConfiguration.php 文件中是否有任何内容可以告诉 TYPO3 即时创建盐字或类似的东西?

我可以毫无问题地登录 TYPO3 后端。

saltedpassword 配置是这样的(序列化字符串,我手动换行)

a:2:{
  s:3:"BE.";
  a:4:{
    a:2: {
      s:3:"BE.";
      a:4:{
        s:21:"saltedPWHashingMethod";
        s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";
        s:11:"forceSalted";
        i:0;
        s:15:"onlyAuthService";
        i:0;
        s:12:"updatePasswd";
        i:1;
      }
      s:3:"FE.";
      a:5:{
        s:7:"enabled";
        i:1;
        s:21:"saltedPWHashingMethod";
        s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";
        s:11:"forceSalted";
        i:0;
        s:15:"onlyAuthService";
        i:0;
        s:12:"updatePasswd";
        i:1;
      }
    }
    s:21:"saltedPWHashingMethod";
    s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";
    s:11:"forceSalted";
    i:0;
    s:15:"onlyAuthService";
    i:0;
    s:12:"updatePasswd";
    i:1;
  }
  s:3:"FE.";
  a:5:{
    s:7:"enabled";
    i:1;
    s:21:"saltedPWHashingMethod";
    s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";
    s:11:"forceSalted";
    i:0;
    s:15:"onlyAuthService";
    i:0;
    s:12:"updatePasswd";
    i:1;
  }
}

我最好的猜测是它必须对文件权限做一些事情。由于我在 LocalConfiguration.php 中看不到任何地方,我在其中手动设置了我的盐,并通过跟踪typo3/sysext/saltedpasswords/Classes/Sal/PhpassSallt.php 中使用的盐,我看到它每次都是新生成的。

那么 TYPO3 将生成的盐相存储在哪里?

【问题讨论】:

    标签: typo3


    【解决方案1】:

    盐存储在包含密码哈希的相同字符串中,使用 PHPs crypt()-function。哈希字符串由字符$ 分成几部分。第一部分告诉使用的哈希算法,其他部分的含义取决于第一部分。

    例子:

    echo crypt('test');
    

    打印$1$cr6nr8HA$tY7hBRMQdxgeNWCQ6WmOt/,它存储在LocalConfiguration.php 中(至少对于安装工具而言)。该字符串由三部分组成,由字符$分隔:

    1. 1
    2. cr6nr8HA
    3. tY7hBRMQdxgeNWCQ6WmOt/

    第一个是使用的算法,第二个和第三个是盐和哈希。可以通过检查crypt($enteredPassword, $hashedPassword) === $hashedPassword 来检查密码,因为$hashedPassword 包含所有需要的信息。

    【讨论】:

    • 我知道加密的哈希字符串。但是有一个盐字符串,在散列之前添加到密码中。在我的情况下,每次都会生成这个盐字符串。但它应该是一个常量字符串才能正常工作。这必须存储在某个地方。但是哪里?而且我认为 crypr 不是 PhpassSalt.php 中的 sed,而是 md5 的多次运行。
    • 我添加了一个例子。
    • 这不是问题。
    • 使用的算法由 PhpassSalt.php 定义。所以第一部分是P,只有第二部分,没有第三部分,因为盐是在地穴之前而不是之后施加的(反过来就没多大意义了)。但是,如果我每次调用它时都得到一个不同的加密字符串呢?
    • 它仍然按照我上面描述的方式存储,但是第二部分和第三部分之间的分隔符不是$。这可以完成,因为盐具有已知的固定长度。当然,盐是在散列之前应用的,但它会在最后附加到生成的散列中,以便存储它。您可以在 TYPO3 6.2.6 中 PhphassSalt.php 的第 153 行中看到
    【解决方案2】:

    我修好了,

    问题是,由于文件权限问题,我无法保存 LocalConfiguration.php 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 2010-12-03
      • 1970-01-01
      • 2010-09-28
      相关资源
      最近更新 更多