2016-09-09 20 views
0

私はいくつかの調査を行い、パスワードを生成するすべての方法には「ランダム」部分が含まれているようです。可能な限り安全なパスワードを生成し、ランダムな部分がないので、スクリプトを生成できるようにするにはどうすればいいですか?phpの中で最も安全な方法は何ですか?

私のウェブサイトには、ユーザー名が 'foo_bar'のユーザーがいます。

hash('sha512', 'foo_bar'.'some_secret_word') 

パスワードを生成するのが最善の方法でしょうか?

編集:私は入力に同じ文字列を、それを与えて同じパスワードを生成するために、私のスクリプトが必要なので、ランドを含むすべてが()答え

EDITではありません:レッツ・ディテール問題。私はCSV形式で長いユーザーデータ(ユーザー名、電子メール、アドレスなど)を持っています。私は自分のウェブサイト(CMS上に構築された)の中にそれらをインポートする必要があります。私はそれらをインポートする方法を知っている、ユーザーを生成するが、私は自分のPHPでパスワードを生成する必要があるため、いつでもそれらを見るために、私は異なる時間にユーザーに資格情報を印刷する必要があります。任意の要素でパスワードを生成するということは、いつでも資格情報を持っていて印刷できないことを意味します。何らかの理由で、私は単にそれらを一度生成し、どこかに保管して後でチェックすることはできません。明らかに、私はパスワード= 'username_astring'のような簡単な方法でパスワードを生成することはできません。自分のパスワードを見ているユーザーは他の人のパスワードを知っているので、この方法を使用していました。しかし、このアイデアは私にとってはまったく「きれい」ではないようです。より標準的でクリーンなソリューションがあれば、私は推測していました。

+5

ランダムビット(塩)は、ハッシュを安全にするものの一部です。 [Password API](http://php.net/password)を使用して、自分のパスワードワークフローのロールを止めてください。 –

+0

「安全」とはどういう意味ですか? – Scott

+1

パスワードを生成するかハッシュを生成しようとしていますか?それははっきりしていません。 – Machavity

答えて

1

あなたが言及しているのは、saltingパスワードの実践です。ユーザーのパスワードにハッシュアルゴリズムを適用する前に、別の文字列が追加されるという考え方は正しいです。それを守るために何を意味するのかは、いわゆるrainbow tablesであり、攻撃者は共通パスワードのハッシュを事前計算し、ハッシュされたパスワードと比較して、取得したデータベースダンプと比較します。

この場合のベストプラクティスはnot roll your own hashing algorithmです。試してテストされ、安全であることが証明されているサードパーティのハッシュライブラリがたくさんあります。

パスワードを変更するために、異なるパスワード(パスワードの変更を含む)の異なる塩を生成するのがベストプラクティスです。パスワードの変更も含めて、認証の試みをチェックするためにパスワードとともに保存する必要があります。

+0

OPは彼の質問を明確にしました。彼は塩で可逆パスワードを望んでいる。ハッシュの良い答え、tho – Machavity

+0

毎回塩を変えることについての提案をありがとう:本当に貴重! –

関連する問題