セキュリティ上の理由から、ユーザーのパスワードを (salt を使用して) ハッシュし、それを保存されているハッシュされたパスワードと比較する必要があることを私は知っています。それをレインボーテーブルに。
やり方が分からないところがあります。この標準のログインフォームがあるとしましょう
<form method='post' action='login.php'>
<input type='text' name='user' />
<input type='password' name='password' />
<input type='submit' name='submit' value='login' />
</form>
次に、ログインにPHPを使用します
<?php
if(isset($_POST['submit'])){
$username = $_POST['username'];
$password = sha1($_POST['password']);
$authorize = $login_object->login($username, $password);
}
?>
そして、舞台裏で、$login_object
がデータベースでの認証を処理し、true/false を返します。(私はこのオブジェクトを作成しました。これを行うための実際の便利なオブジェクトがあります)
しかし、それは旅行中の生のパスワード、POST request
ハッシュ化されていない安全でないことを意味します! 誰でも本当のパスワードを傍受できたはずです!
だから私が考えているのは、パスワードを送信する前に、JavaScriptを使用してパスワードをハッシュする必要があるということです。隠しフィールドが<input type='hidden' name='real_password' value='' />
あり、javaScript に password という名前の入力の値をコピーさせ、それをハッシュし、それを real_password 隠し入力に入れ、パスワード フィールドを空白にします。この方法ではPOST request
、生の安全でない元のパスワードではなく、ハッシュ化されたパスワードが保持されます。
私が言っていることは正しいですか、それともphpでハッシュを行うべきですか?