ユーザーとしてのあなたは、パスワードがどのように暗号化されているかを知りません(実際にはまったく暗号化されていませんが、ハッシュ化されています)。
パスワードを渡すだけで、MySQLは元のパスワードと同じハッシュを実行し、保存されているものと比較できます。ハッシュバージョンを渡すと、ハッシュの利点はすべて失われます。誰かがサーバーからハッシュを取得した場合、それらを使用して、通常のパスワードであるかのようにログインできます。その後、ハッシュがパスワードになりました。
追加の利点は、MySQLが元のパスワードを持っているため、より良いアルゴリズムで再ハッシュし、少し塩を追加して、その改善されたバージョンを保存できることです。それがオリジナルを決して取得しないならば、それはすることができません。 PHPのパスワード関数
これもサポートします。 password_needs_rehash
で確認できます ハッシュされたパスワードがまだ適切にハッシュされている場合は、データベースを更新します。そうでない場合は、データベースを更新します。
したがって、セキュリティのために、他の対策を講じる必要があります。これらは少なくとも:
- パスワードは、ドキュメントルートの外部にあるインクルードファイルに保存します。そうすれば、誰もそのファイルを直接開くことができません。
- インクルードファイルがインクルードされずに開かれるのを防ぐことができます(たとえば、index.phpで設定された定義をチェックすることによって)。それは素晴らしいことですが、構成エラーのためにPHPが失敗した場合、人々はファイルのソースを参照するだけでよいので、前のルールを守ります。
- 常に特別なデータベースユーザーを作成します。
root
は使用しないでください 。このユーザーにデータベースを操作するのに十分な権利を与えますが、それ以上は与えません。たとえば、テーブルを削除する権限はありません。 - 常にそのユーザーに一意のパスワードを与えます。このパスワードを覚えておく必要はありません。たくさんの文字でランダムなゴミを生成するだけです。
- パスワードは定期的に変更してください。たぶん、それをスクリプト化して、更新されたパスワードを構成に保存することもできます。