Согласно руководству: password_hash эту функцию можно использовать для (PHP 5 >= 5.5.0)
После поиска альтернативного способа я нашел эту простую функцию отсюда: http://www.sitepoint.com/password-hashing-in-php/
function generateHash($password) { if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) { $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); return crypt($password, $salt); } }
Я могу управлять своим кодом, используя function_exists
перед использованием, но мой вопрос касается выше альтернативного кода, если он защищен или нет, или есть ли альтернатива в более старых версиях PHP?
Для версий PHP <5.3.7 я бы рекомендовал:
http://www.openwall.com/phpass/
Для версий PHP> = 5.3.7 используйте:
https://github.com/ircmaxell/password_compat
Создание собственных солей требует многого, потому что хорошая, правильная соль требует большой энтропии. Генерация этой соли в PHP вызывает беспокойство, поэтому вы обычно оказываетесь в зависимости от других ресурсов, чтобы предоставить вам эту строку, например /dev/urandom
или openssl_random_pseudo_bytes
. Поверьте мне, это не то, что вы хотите попробовать самостоятельно, без серьезных исследований и рассмотрения.
Рекомендуется использовать новый password_*
API, но это может быть проблематично, если вам нужно поддерживать более старые версии PHP, в которые входит PHPass. Должен ненавидеть те планы размещения в 1 доллар в месяц с помощью PHP 5.2
Для версий PHP> 5.3.7, но до 5.5.0 вы можете найти реализацию password_hash в https://github.com/ircmaxell/password_compat, написанном тем же человеком, который разработал версию, реализованную в PHP 5.5.0 + и намеренно предназначен для обеспечения обратной совместимости