问:$ user中的密码哈希是否未被*放置

时间:2015-08-07 13:38:13

标签: cakephp passwords cakephp-3.0

在我的旧cakephp 2.x应用程序中,当我从用户模型中检索数据时,密码哈希被'*'隐藏。我不是一个真正的hundret,但我认为这是由Cake自动完成的。

现在测试Cakephp3.0,我很惊讶从用户模型中检索数据时发现完整的哈希值。

我有一些关于这个密码哈希隐藏的问题:

  • 我认为这是cakephp2中的函数吗?
  • 有谁知道,为什么这个功能没有在Cakephp3中实现?为什么?
  • 如果我错了,假设它包含在蛋糕中,那么在cake2和cake3中实现此功能的地方在哪里?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

  

我认为这是cakephp2中的一个功能吗?

是的,在Cake 2.x中,这是调试器的一部分,但是数据本身没有被触及,只是在输出数据时屏蔽了一些内容。

  

有谁知道,为什么这个功能没有在Cakephp3中实现?为什么?

它仍在实施,但它已被移动。这个掩盖事物的重点是避免意外暴露数据源凭证(主要是在错误消息/页面中),它从来没有真正与可能的用户模型数据有关,这只是碰巧使用密钥的数据的副作用比如password

因此,在3.x中,此功能已移至\Cake\Database\Connection::__debugInfo()

<强> https://github.com/cakephp/cakephp/pull/4542

这确保您在例如调试连接对象(显式或隐式在错误页面上)时仍然会使用屏蔽凭据,同时它不会阻碍调试其他数据。

enter image description here

  

[...],在[...] cake3中实现此功能的地方在哪里?

这在很大程度上取决于您的用例,如果您想要在调试输出中屏蔽它,那么您可以在用户实体类中的重写__debugInfo()方法中实现它,类似于Connection班正在这样做。

<强> https://github.com/cakephp/cakephp/blob/3.0.11/src/Database/Connection.php#L702

当然,这只适用于实体,不适用于非水合数据(阵列数据)。