8

OK、ようやく bcrypt とその仕組み、DB への保存方法を理解できたので、準備はほぼ完了です。問題は、PHP で使用する bcrypt の実装を選択すること5.3です。

さまざまなソリューションをすべて見て夢中になりましたが、どれが最も推奨され、最も安全に使用できるかわからないので、もう一度皆さんに頼っています.

ここに私が見つけたものがあります:

1) https://gist.github.com/marcoarment/1053158

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

3) https://stackoverflow.com/a/6337021/869849

4) ...他に何か?

これらは交換可能ですか、それとも異なるハッシュを生成しますか? それらはすべて「bcrypt」であるため、同じ結果が得られると思いますが、わかりません(テスト1)した以上で、でチェックアウト2)されたハッシュが生成されたため、交換可能であるようです)。1)2)

では、PHP に推奨されるソリューションは5.3どれですか?

4

2 に答える 2

18

最善の解決策: PHP 5.5 に組み込まれているパスワード ライブラリを使用する必要があります。彼らはpassword_compatと呼ばれる PHP 5.3 および 5.4 の後方互換バージョンをリリースしました。ただし、5.3.7 以降が必要になることに注意してください。5.3.7 より前の bcrypt にはセキュリティ上の問題があり、新しいライブラリは機能しません。

5.3.7 より前のバージョンを使用している場合、次に最適なオプションは同じ作成者によるPassword Libです。しかし、代わりに PHP をアップグレードすることをお勧めします。

インストール

どちらのライブラリも、ダウンロードしてサイト フォルダにコピーし、メイン ファイルをコードに含めるだけで簡単にインストールできますrequire('password.php');

Composer を使用している場合は、Composer 経由でインストールすることもできます。

使用法(password_compat を使用する場合):

パスワードを作成するには:

$hash = password_hash($password, PASSWORD_BCRYPT);

パスワードを確認するには:

if (password_verify($password, $hash)) {
    /* Valid */
} else {
    /* Invalid */
}

そして、それは基本的にあなたが知る必要があるすべてです. ライブラリは、パスワードのソルティングなど、他のすべての詳細を処理します。

[編集] コメントに従って、アルゴリズムの「コスト」を変更する必要がある場合は、呼び出しに追加のパラメーターを追加して、次のpassword_hash()ように指定します。

password_hash($password, PASSWORD_BCRYPT, array("cost" => 11));

完全なドキュメントは、上でリンクしたダウンロード ページで入手できます。

password_compat ライブラリを使用することの本当に良い点は、PHP 5.5 で標準として PHP に組み込まれているのと同じ API と機能を持つように特別に設計されていることです。したがって、PHP 5.3 または 5.4 を使用しているときに password_compat を使用している場合、PHP 5.5 に移行するときに、新しい組み込みパスワード関数を使用するための適切なコードがシステムに既に含まれています。include唯一の違いは、ライブラリが必要ないことです。

于 2013-03-27T16:52:39.130 に答える
1

PHP 5.5 に更新しようとしている場合は、移行前にこれを確認してください。このマニュアルには、アップグレード前に読むべき非常に興味深い点があります。

5.3 から 5.4 への変更と、リリース ノートの後方非互換性ページがあります。

http://php.net/manual/en/migration54.incompatible.php

于 2014-09-27T10:04:48.983 に答える