PHPでのパスワードハッシュ化
パスワードを平文で保存するのは間違っています。 悪意のあるハッカーがあなたのデータベースにアクセスし、 パスワードを盗む可能性があります。
そのため、通常はログイン名は平文で保存されますが、
パスワードはmd5という特別な関数でハッシュ化されます。
この関数はパラメータとしてパスワードを受け取り、
そのパスワードを復元できないハッシュを返します。
例えば、ある文字列のハッシュを見てみましょう:
<?php
echo md5('12345'); // '827ccb0eea8a706c4c34a16891f84e7b' を出力します
?>
今、私たちの登録と認証を修正する必要があります。 まず、ユーザーテーブルをクリアすることをお勧めします。 なぜなら、そこには現在平文のパスワードが保存されており、 それらのハッシュが保存されるべきだからです。 その後、登録をテストする際に、新しい形式のデータで テーブルが埋められます。
さて、新しいユーザーをデータベースに保存する際に、 パスワードではなくそのハッシュが追加されるように、 登録を修正しましょう。
説明した修正は、次のようなものになります:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // パスワードをそのハッシュに変換します
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
同様の修正を認証にも加えましょう:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // パスワードをそのハッシュに変換します
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
ハッシュ化を考慮して登録に変更を加え、 新しいユーザーを数人登録し、 データベースにハッシュ化されたパスワードで 追加されたことを確認してください。
ハッシュ化を考慮して認証に変更を加え、 以前に登録したユーザーでログインを試みてください。