我有一个通过Symfony formBuilder创建的表单
就像这样,我在字段中看到加密的密码:
$formBuilder->add('password', TextType::class, array('attr' => array('class' => 'form-control')));
但是实际上我需要使用plainPassword字段(以后再对密码进行编码):
$formBuilder->add('plainPassword', TextType::class, array('attr' => array('class' => 'form-control')));
但是此字段为空。我想查看数据库中解密的密码。我怎么能意识到这一点?
答案 0 :(得分:1)
理想情况下,您的密码会以某种方式散列,这样您就无法轻松地从存储的字符串中检索实际密码。相反,您使用相同的选项对用户输入进行哈希处理,并比较两个哈希是否匹配。您正试图通过显示纯密码来规避安全机制。
最好不要向用户显示原始密码。他们要么知道,要么应该请求一个新密码,您可以通过邮件将其发送给他们,甚至更好地为他们提供一个令牌,以便他们可以输入新密码而无需指定现有密码。
如果由于某种原因您不得不放弃此建议并实际显示普通密码(同样,这是非常不安全的),那么您必须以一种可以将其与散列密码一起读取或代替散列读取的方式进行存储它。您也可以使用加密而不是散列,例如通过使用openssl_encrypt
来存储密码,然后在显示密码时使用解密对应项。