2013-09-30 10 views
12

:私は使用する前に、function_existsを使用して自分のコードを管理することができますhttp://www.sitepoint.com/password-hashing-in-php/(PHP 5 <5.5.0)のpassword_hash()の代替手段は何ですか?マニュアルによると

function generateHash($password) { 
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) { 
     $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); 
     return crypt($password, $salt); 
    } 
} 

password_hashこの関数は、私はここから、この単純な関数を見つけた別の方法を探した後(PHP 5 >= 5.5.0)

のために使用することができますしかし、私の質問は安全であるかどうか、または古いバージョンのPHPで何か別の選択肢があれば、代替コードの上にあるのでしょうか? PHPのバージョンについては

+2

'crypt()'はパスワードハッシュを生成します...あなたは塩を生成する必要はありませんが、それはあなたがその関数に持っている余分なものです。 – upful

+0

A Openwallの[Portable PHP password hashing framework](http://www.openwall.com/phpass/)(PHPass)を参照してください。ユーザーのパスワードに対する多くの一般的な攻撃に対して強くなっています。 – jww

答えて

16

< 5.3.7は、私がお勧めしたい:

https://github.com/ircmaxell/password_compat

独自の塩の生成:PHPのバージョン> = 5.3.7、使用のために

http://www.openwall.com/phpass/

良い、適切な塩が多くのエントロピーを必要とするので、多くの方法を知っています。 PHPでこの塩を生成するのは面倒です。そのため、普通は/dev/urandomopenssl_random_pseudo_bytesのように、この文字列を提供するために他のリソースに依存することになります。私を信じて、これは深刻な研究と配慮なしにあなた自身を試してみたいことではありません。新しいpassword_* APIを使用して

が推奨されていますが、PHPassの出番であるPHPの古いバージョンをサポートする必要がある場合、それは問題になることがあります。お奨めのためにPHP 5.2

+0

ありがとうございます、私はpassword_compactを試してみましたが、phppassが魅力的に働くように、PHP 5.4のホスティングサーバーでは見つからなかった条件もあります。 –

6

と月のホスティングプランごとにこれらの$ 1憎みますPHP> 5.3.7で5.5.0より前のバージョンでは、PHP 5.5.0以降で実装されたバージョンを開発した同人によって作成された、password_hashの実装をhttps://github.com/ircmaxell/password_compatに見つけることができます。

+1

+1はhttps://github.com/ircmaxell/password_compatの追加情報については、あなたの答えがいくつかの重複しているためです:) –

関連する問題