0

password_compatライブラリを使用して、アルゴリズムとしてbcryptを使用してユーザー認証を実行しています。

今では毎回異なるハッシュを作成しているため、データベース内のハッシュをSQLと直接比較することはできません。WHERE password = :hash

したがって、私のsqlステートメントは次のようになります:SELECT username, password FROM Users WHERE username = :username、その後にpassword_verify()メソッドが続きます。

今私の大きな質問は、与えられたユーザー名だけでパスワードハッシュをフェッチするのは安全ですか?

心配しすぎだと思いますよね?

4

2 に答える 2

2

はい、あなたは心配しすぎています。どちらの方法でも、ハッシュはデータベース サーバーとアプリケーション サーバーの間で渡され、メモリ内のどこかに保存されます。最初の例では、アプリケーション側でハッシュが生成され、データベースに送信されます。2 番目の例では、ハッシュがクエリされて返されます。

于 2013-03-23T20:52:45.400 に答える
0

ユーザー名がデータベース内で一意である限り、もちろんです。照合ロジックの餌食にならないようにする必要があります。たとえば、ユーザー名は「grég」ですが、データベースでは「greg」と一致します。このために、ユーザー名を構成する文字を制限するか_bin、列で照合を使用します。

それ以外は、次のステップである PHP コードでのパスワード比較を正しく処理する限り、何も変わりません。

于 2013-03-23T21:00:21.507 に答える