0

PHP を練習するための新しいログイン システムを作成しています。以前に作成したシステムは、学習を重ねるうちにかなり安全性が低いことがわかりました...

とにかく、基本的に、本当に安全にする方法について少し混乱しています。ページごとにユーザーを認証する必要がないというこの状態に関する同様のことに対する多くの回答。彼らは承認される必要があるだけです。ただし、たとえば、アカウントのパスワードが変更されたときに、ユーザーが現在アカウントにログインしているすべてのユーザーを強制的にログアウトできるようにしたいとします (実際には、パスワードを変更した人はログインしたままになります。十分に単純なタスク...)。

これが機能していると考えることができる唯一の方法は、データベース内のユーザーの資格情報と比較できるように、パスワードが何らかの形で保存されている場合です。

基本的に、このため、いくつかの質問があります。

  1. なぜほとんどの人は、ログインシステムをこのように機能させる価値がないと考えているのでしょうか?
  2. 私が見落としている、これを行う途方もなく簡単な方法はありますか?(いずれにせよ、誰かが私にそれを行う方法を教えてくれるなら、私はそれを大いに感謝します!)
  3. ログイン システムにユーザーを記憶させる場合、安全性を確保し、引き続きユーザーを記憶させるには、Cookie に何を含める必要がありますか?

ありがとう!

4

2 に答える 2

1

優れたセキュリティは、複数レベルの認証に依存しています...認証データをセッションとCookieに保存し、パスワードを暗号化するなど。

これがどのように機能するかについてのあなたの質問に答えるために。

認証されたユーザーの後にCookieを保存し、パスワードハッシュを含むセッション変数を設定する基本認証クラスを構築できます。各ページでユーザーが認証されていることを確認するために使用する方法が何であれ、ハッシュと比較してパスワードをデータベースで確認できます。変更された場合、認証は失敗します。

https接続を介してCookieが設定されていることを確認できます。ただし、httpsでない場合は、Cookieは設定されません。setcookie関数には、Cookieをhttpのみに制限できるようにするパラメーターもあります。これにより、JavaScriptは、クロスサイトスクリプトなどのようにCookieを保持できなくなります。 http://php.net/manual/en/function.setcookie.php

セキュリティとは、何かがどのように機能し、どのように悪用されるかを理解することです。

于 2012-04-28T04:27:45.267 に答える
1

これを行う基本的な方法があります。

ログイン時に、セッション ID、ソルト、およびユーザー パスワード ハッシュを文字列に連結し、md5 ハッシュします。「auth」などと呼ばれるCookieに保存します。

ユーザーのパスワード、セッション ID、salt の md5 ハッシュが "auth" cookie であるデータベースからページを選択するだけです。このようにして、一致するものがない場合、ユーザーはログインを求められます。

于 2012-04-28T04:21:04.740 に答える