如何在Zend Framework中解密密码值?

时间:2012-09-26 11:31:32

标签: zend-framework zend-form-element

我的问题是当我在zend密码元素中输入密码时它显示在子弹标志(加密格式)中,当我在chrome或Mozilla中检查它时,它以纯文本显示密码。我可以在zend元素加密密码,如gmail密码文本框我的意思是当我输入密码并检查该密码时,它不会以纯文本格式显示我的密码。

我的zend格式的密码元素是:

$password = new Zend_Form_Element_Password('Password');

$password->setRequired(true)
        ->setAttrib('size', 30)
        ->setRenderPassword(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
    ->addValidator('StringLength',false,array('min' => 6,'max' => 50,                          

'messages' => array(
    Zend_Validate_StringLength::INVALID =>'Please Enter correct Password',
    Zend_Validate_StringLength::TOO_LONG =>'Password is too long',
    Zend_Validate_StringLength::TOO_SHORT =>'Password is too short')));;
    $password->class="textbox";
    $password->setDecorators($decorators);
    $password->setAttrib('Maxlength', 50);      

2 个答案:

答案 0 :(得分:0)

我认为由于setRenderPassword(true)语法而存在此问题。如果删除它,则密码不会是纯文本。

答案 1 :(得分:0)

看起来你的密码元素比实际需要更加繁忙。

  • 您永远不想看到或显示密码,您不关心您所关心的值是输入的密码值是否与数据库中的值相混合。

  • 删除验证程序中的'max'值,只要密码具有最小长度(无论如何都要将密码哈希到特定长度),您不关心密码的长度。

  • 删除INVALID消息,这不是您验证密码的地方(在您的auth()函数中发生),所有这些验证器都会验证格式。

  • 再次删除MaxLength属性 - 您不关心密码的长度,让他们使用Moby Dick的第一章,如果它让用户感觉更好。

  • 请注意密码元素中使用的过滤器,因为如果您更改或删除它们,您可能会破坏数据库中的大多数密码哈希值。此外,如果这些过滤器的实现发生变化,也可能会破坏您的哈希值。


    $password = new Zend_Form_Element_Password('Password');   
    $password->setRequired(true)
             ->setAttrib('size', 30)
             ->addFilter('HtmlEntities')
             ->addValidator('StringLength',false,array('min' => 6,                           
                'messages' => array(       
                    Zend_Validate_StringLength::TOO_SHORT =>'Password is too short'
              )));;
    $password->class="textbox";
    $password->setDecorators($decorators);

现在你将'Password'的值转储到你的散列函数中并保存或比较它。

祝你好运!