ホームページ  >  記事  >  バックエンド開発  >  ウェブサイトの登録とログイン、パスワードを暗号化するにはどうすればよいですか?

ウェブサイトの登録とログイン、パスワードを暗号化するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 12:01:221731ブラウズ

ウェブサイトの登録とログインのパスワードを暗号化するにはどうすればよいですか?
これに関する記事をインターネットでたくさん読みましたが、どの記事も、ログイン時にクライアントのパスワードを md5 で暗号化してサーバーに送信する必要があり、サーバーはそれをデータベース内のソルトと比較すると言っています。

何をすればよいのかよくわかりません

ユーザー A のユーザー名が abcd で、パスワードが 123456 であるとします。md5 暗号化後、e10adc3949ba59abbe56e057f20f883e
ハッカーは、誤ってユーザー名: abcd 、パスワード: e10adc3949ba59abbe56e057f20f883e を取得しました

この時点では、abcd のパスワードが 123456 であることを知る必要はなく、e10adc3949ba59abbe56e057f20f883e がどのように生成されるかを理解する必要もありません。彼はユーザー名: abcd を入力し、パスワード: e10adc3949 ba59abbe56e057f20f883e を入力するだけで、ログインしたサービスを呼び出します。

この状況を回避するにはどうすればよいですか?
------解決策------------------
ハッカーはどのようにしてユーザー名 abcd と暗号文を知るのでしょうか? ?
------解決策----------------------
クライアントは暗号化を必要としません
ログのみを記録するだけです通常のユーザー名とパスワードを使用して入力します。

次に、サーバー側でパスワードに対して md5(md5(password) Salt) 操作を実行して、暗号化されたパスワードを生成します。塩はデータベースから取得されます。
データベース内の暗号化されたパスワードと比較します。
それらが同じであればログインは成功し、そうでなければログインは失敗します。

このアプローチの利点は、たとえデータベースがハッカーによって入力されたとしても、ユーザーの平文パスワードを知ることができないことです。
------解決策---------
サーバー側のパスワードは次のように比較されます

if ($row['pwd'] == md5($_POST['pwd'])){
//
}
MD5 以降のパスワードを他人が知っていたとしても、サービス終了時には、再度暗号化するか、複数回暗号化してから比較する必要があります。

-----解決策--------------------------------
ハッカーがデータベースに侵入し、メンバーのユーザー名と暗号化されたパスワードを取得したとしても、md5 暗号化は基本的に不可逆であるため、ハッカーは既知のサービスを呼び出してログイン操作を完了することはできません。

しかし、md5 暗号化層はあまり安全ではありません。多くの Web サイトは md5 復号化を提供しています。 md5 で複数回暗号化するか、独自のカスタム文字列を追加してから md5 で暗号化することをお勧めします (md5(user_passwd.your_dependent_string))。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。