2016-07-20 12 views
0

Ich habe versucht, ein Passwortfeld mit den 'eval'-Funktionen von Typo3 zu erstellen.TYPO3 7.6.x Erstellen eines verschlüsselten MD5-Passworts im TCA

TYPO3 Version 7.6.9

Hier ist meine config:

'password' => array(
      'exclude' => 1, 
      'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_pin.password', 
      'config' => array(
       'type' => 'input', 
       'size' => 50, 
       'eval' => 'nospace,required,md5,unique,password' 
      ) 
     ), 

, wenn ich das ‚Passwort‘ das Feld normaly am Ende auslassen gespeichert wird, aber sobald ich es hinzufügen, die Passwortfeld wird nicht mehr aktualisiert/gespeichert.

+2

werden Überprüfung Sie *** NICHT SOLLTE *** Verwendung MD5 für Password Hashing, es ist einfach zu brechen. Verwenden Sie BCRYPT oder etwas. Wenn Sie PHP verwenden, verwenden Sie die Funktionen 'password_hash' und' password_verify'. Sie salzen automatisch das Passwort und können, wenn zusätzlich 'password_needs_rehash' verwendet wird, verwendet werden, um automatisch auf einen neueren/stärkeren Hashing-Algorithmus zu aktualisieren, wenn der aktuell verwendete zu schwach wird. – Jost

+2

Beachten Sie auch, dass MD5 * nicht * verschlüsselt ist, daher ist Ihr Fragetitel falsch. MD5 ist ein Hashalgorithmus, ebenso wie BCRYPT und alle anderen ähnlichen Methoden zur Sicherung eines Passworts. Hashing ist nicht dasselbe wie Verschlüsselung. – Simba

Antwort

-1

Sie müssen die Parameter md5 und unique nicht als Prüfparameter hinzufügen. In 7.x werden Passwörter automatisch mit der Systemerweiterung saltedpasswords verschlüsselt und es ist sicherer als md5. Passwörter sind normalerweise nicht eindeutig, also denke ich, dass es aus Versehen da ist, aber eigentlich sollte es auch mit Unique funktionieren.

 'password' => array(
      'exclude' => 1, 
      'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_pin.password', 
      'config' => array(
       'type' => 'input', 
       'size' => 50, 
       'eval' => 'nospace,required,password' 
      ) 
     ), 

später können Sie das Passwort auf diese Weise überprüfen: $hash ist die Passwort-Hash von Ihrem db und $password ist das Playin Passwort

 if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('saltedpasswords') && \TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) { 
      $saltObject = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(NULL); 
      return $saltObject->checkPassword($password, $hash); 
     } elseif ($GLOBALS['TYPO3_CONF_VARS']['FE']['loginSecurityLevel'] == 'md5') { 
      return $password == md5($password); 
     } elseif ($GLOBALS['TYPO3_CONF_VARS']['FE']['loginSecurityLevel'] === 'sha1') { 
      return $password == sha1($password); 
     }