1

最近、MYSQL と PHP を使用してログイン/登録システムの作成を開始しましたが、登録時にパスワードをハッシュしたのに、ログインに関しては機能しないという問題に遭遇しました。

http://snap.binarypaw.com/gc53h3w0.png <-- 登録コード http://snap.binarypaw.com/1qhsyeyw.png <-- ログイン コード

誰かが答えを持っていれば、私はもっと喜んでいます。

編集

このドメインのリンクは現在無効になっています。ご不便をおかけして申し訳ございません。

4

5 に答える 5

4

ログイン コードでは、入力したパスワードの MD5 ハッシュ バージョンと、保存している MD5 ハッシュ バージョンを比較する必要があります。ハッシュが一致すると、パスワードが一致します。

これを実現する最も簡単な方法は、登録コードとまったく同じ方法で比較する直前に、入力したパスワードをハッシュすることです。

$query = "SELECT user,pass FROM members WHERE user='$user' AND pass='".md5($pass)."'";

編集:これはあなたの質問に直接答えることに注意してください。ただし、マイクは上記のコメントで非常に有効な点を指摘しています。MD5 は脆弱であるため、パスワード ハッシュには適していません。さらに、ハッシュを塩漬けしていません。ユーザーを保護するために、これらの両方の変更を行うことを強くお勧めします。このなど、右側にある関連する質問のいくつかは、始める前に一見の価値があります。

于 2013-08-02T18:57:26.733 に答える
3

他の回答は、特定の問題に対する直接的な解決策を提供していますが、コードの背後にあるセキュリティについてもう少し詳しく説明します-あなたと他の人の参考のために. これに追加するか、必要に応じて私を修正してください。

パスワードをに保存することmd5はできません。これは、md5ハッシュ アルゴリズムが簡単に/迅速にブルート フォースされる可能性があるためです。また、mysql_非推奨の関数を使用します。PDO (または代わりに mysqli_ 関数)を使用する必要があります。幸いなことに、データをサニタイズしますが、これらの機能は維持されなくなっているため、切り替えることをお勧めします。

これは、 PDO と SALT を使用して基本的なログイン システムを作成するための優れたチュートリアルです。いくつかの理由から、これを確認して、このような方法でログイン システムを再実装することを強くお勧めします。

一般に、ユーザーに不当に不便を与えることなく (SALT の保存や強力なハッシュ アルゴリズムの使用など)、システムにセキュリティを追加する機会がある場合は、将来直面する頭痛の種を減らすために前もって機会を利用してください。

お役に立てれば!

于 2013-08-02T19:22:35.503 に答える