2016-07-20 3 views
0

Я попытался создать поле пароля, используя функции eval для Typo3.TYPO3 7.6.x Создание зашифрованного пароля в MD5 в TCA

TYPO3 версии 7.6.9

Вот мой конфиг:

'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' 
      ) 
     ), 

если я оставить из «пароль» в конце поля сохранялось нормально, но как только я добавить его, поле пароля больше не обновляет/сохраняет.

+2

Вы *** НЕ СЛЕДУЕТ *** использование md5 для хэширования паролей, его легко сломать. Используйте BCRYPT или что-то в этом роде. Если вы используете PHP, используйте функции 'password_hash' и' password_verify'. Они автоматически солят пароль, а при дополнительном использовании 'password_needs_rehash' могут быть установлены, чтобы автоматически обновлять новый или более сильный алгоритм хеширования, когда используемый в настоящее время становится слабым. – Jost

+2

Также обратите внимание, что MD5 - это * не * шифрование, поэтому ваш заголовок вопроса неверен. MD5 - алгоритм хэширования, как и BCRYPT, и все другие подобные методы для защиты пароля. Хеширование - это не то же самое, что шифрование. – Simba

ответ

-1

Вам не нужно добавлять md5 и уникальные параметры eval. В паролях 7.x автоматически зашифровывается расширение системы saltedpasswords, и оно безопаснее, чем md5. Пароли обычно не уникальны, поэтому я предполагаю, что он там по ошибке, но он также должен работать с уникальным.

 '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' 
      ) 
     ), 

позже вы можете проверить пароль таким образом: $hash является хэш пароля от вашей БД и $password это на Playin пароль вы проверяете

 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); 
     } 
Смежные вопросы