0

この時代、私たちはさまざまなマシン、デバイス、電話を持っていますが、自分の名前で覚えておきたい場合があります。

私は、1 人のユーザーが現在作業中のデバイスで "remember me" をチェックできる Web サイトを持っており、家の中のすべてのデバイスでこれを機能させています。

現在、ハッシュ化されたキーを作成し、それを Cookie とデータベースに保存する、remember me 機能を使用していました。ただし、同じユーザーで別のデバイスにログインすると、データベース内のハッシュされたキーが上書きされるため、最初のデバイスの記憶機能がダウンします。

さまざまなセッションを保持するためにセッション テーブルを作成することを考えていました (ただし、1 人のユーザーに対して異なるセッションを保持することもできます)。

質問:

PHP を使用してデバイスの一意のセッション キーを設定/生成するにはどうすればよいですか。

異なるデバイスで同じブラウザを使用しているため、ブラウザの指紋は機能しません。

誰かアイデア?

もちろん、Cookie を別のデバイスにコピーしたり、Cookie 情報を (ユーザーから管理者に) 変更したりしないようにすることは重要です。

4

4 に答える 4

0

ユーザー名の代わりにハッシュキーを使用することから始めても、セキュリティは強化されません

ユーザー名を含むCookieを使用するだけです。パスワードはセキュリティのためにあります。

于 2013-01-04T12:33:50.727 に答える
0

すべてのセッションを保存するためにセッションテーブルを作成します。ユーザーのIDとセッションIDをCookieに保存します。これにより、ユーザーが戻ってきたときに、両方がテーブルにあるかどうかを確認できます。そうである場合は、再度ログインする必要はありません。

于 2013-01-04T12:40:42.517 に答える
0

基本的な考え方は、さまざまなデバイスからのセッション ID を保存し、それらを 1 人のユーザーに関連付けることです。データベースレベルでは、ユーザーテーブルに「session_id」フィールドがなく、「session_id」列と「user_id」列を持つ別のテーブルがあることを意味します。

セッション固定とセッション ハイジャックのセキュリティへの影響について考えてください。より安全な「remember me」システムの説明については、次の記事を参照してください。

http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

http://jaspan.com/improved_persistent_login_cookie_best_practice

于 2013-01-04T12:43:59.513 に答える
0

もちろん、Cookie を別のデバイスにコピーしたり、Cookie 情報を (ユーザーから管理者に) 変更したりしないようにすることは重要です。

最終的に、これは間違った問題を解決しています。

これを防ぐ方法は次のとおりです。

  1. どこでも HTTPS を使用します。
  2. secure フラグと httpOnly フラグを使用して、すべての Cookie を HTTPS 経由で送信します。

それでおしまい。これは、クライアントの信頼性の問題に関連しています。怠惰な攻撃者(ユーザー エージェントなど)を阻止できる手法がいくつかありますが、これらの手法はいずれも簡単に偽装できます。

于 2017-12-29T05:05:24.543 に答える