0

Google の gmail のように、ユーザーをログイン状態に保つにはどのような方法を使用すればよいですか? (必要に応じて、ほぼ無制限にログイン状態を維持できます。ログイン状態を維持できます。また、セッション中に IP が変更された場合でも、gmail は引き続きユーザーを認識します)。

PHP セッションは、ブラウザーが閉じられるまで (または 1440 秒) 持続しsession_set_cookie_parameters()ます。MySQL代わりにテーブルを使用することをお勧めします。1 つはユーザーのログイン試行用で、もう 1 つはセッション用ですが、どうすればこれを達成できるのでしょうか。

ユーザーを特定するにはどうすればよいですか? ユーザーがプロキシを使用している場合はどうなりますか? 私が望むのは、安全で便利な方法を使用することだけです。

脇に置きましょう、Network EavesdroppingそしてCross-site Scripting、私はこれらの攻撃に対抗するために最善を尽くしています. ログイン試行ログを使用するとブルート フォース攻撃が拒否され、準備済みステートメントを使用して SQL が挿入されないようにします。

もう 1 つの質問は、独自のログイン システムが必要な場合、どうすればセッション ハイジャックを防ぐことができるかということです。

4

1 に答える 1

0

ALWAYSという名前の2番目の特定のCookie(つまりセッションCookieではない)を使用します

  • そのCookieは長寿命(たとえば1年)に設定されています
  • その値は一意であり、PHPでUIDおよびその他のランダムな(時間...)ものに基づいて決定され、ハッシュキーから作成されます(アルゴリズムを選択してください-md5は弱いと言われています)。例:「df67ewbhca9fasdi383hd.347234892.HASHFROMUIDSPECIFIC」
  • その値は、ユーザーがログインしたときにMySQL(ユーザー行)に保存されます
  • 次のアルゴリズムに従います

    user_login() {
      if ( not signed in ) {
         if (cookies[ALWAYS] is present AND value is in DB AND not null) {
            log the user from that row , automatically
            create his session
         }
         else {
            regular_login()
         }
      }
    }
    
  • ユーザーがログアウトしたら、常にCookieを削除し、DBでその値をnullに設定します

このように、以前にログインしたユーザーは、セッションの有効期限が切れると、最初にログインしたのと同じブラウザーから自動的にログインします(1年間は変更できます)。

ユーザーがログアウトしたら、DBから値を削除して、Cookieが盗まれた可能性を排除します(...)。したがって、盗まれたとしても、もう使用することはできません。

于 2013-01-19T11:50:42.043 に答える