ログインシステムを持っています
たとえば、問題なくJoe
ユーザー名でログインできます。joe
現在、ユーザー名をソルトとして使用するパスワード暗号化を使用しています。これにより、ログインの問題が発生します。たとえば、
SELECT * FROM `users` WHERE LOWER(`username`) = LOWER(`:username`)
$stmt->bindValue(':username', $_POST['user']);
これは正常に機能します。問題はパスワードに関係しています。
SELECT * FROM `users` WHERE LOWER(`username`) = LOWER(`:username`)
AND `password` = :password
$stmt->bindValue(':username', $_POST['user']);
$stmt->bindValue(':password', encrypt($_POST['password'], $_POST['user'])); //encrypt(password, salt)
ご覧のとおり、ユーザーがではjoe
なくでログインしているため、パスワードの暗号化はデータベースをチェックしません。Joe
これに対する回避策はありますか、それとも他のものを塩として使用する必要がありますか?もしそうなら、私は塩として何を使うべきですか?これは私の暗号化機能です:
function encrypt($password, $salt) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($salt), $password, MCRYPT_MODE_CBC, md5(md5($salt))));
}