4

ユーザー A からの Cookie がサーバー側でユーザー B によって盗まれたかどうかを確認する方法はありますか?

たとえば、単純なハッシュ関数 (sha1 など) を使用して作成された Cookie トークン/データ

hash_of(user_agent,ip+proxy_ip,username,random_session_key)

where user_agent is browser's user agent, 
  ip is the client IP address, 
  proxy_ip is the proxy's IP address the client use, 
  username is the username the user currently login, 
  random_session_key is a random number saved to database when a user logged in

その Cookie が LAN 上の別の人によって盗まれて使用され、LAN がプロキシではなく NAT を使用しており、泥棒がまったく同じブラウザを使用していた (またはユーザー エージェントを偽装していた) 場合、サーバー側でどのように検出するかそれ?

4

2 に答える 2

4

はい、方法はあります。これはSecure Cookie Protocolと呼ばれます。

SSLを使用していますよね?(そうでない場合、この会話全体が無意味になるため).

Cookie を暗号化しますが、SSL セッション ID を使用します。SSL が適切なエンドポイント セキュリティ (強力な暗号など) を提供すると仮定すると、SCP はデータを保護し、別の SSL セッションが同じ Cookie を使用しようとしたときに通知できるようにする必要があります (セッション ID が変更されるため、MAC が変更されるため)。

key = HMAC(user name|expiration time, secret_key)
cookie = user name|expiration time|encrypt(data, key)
cookie = cookie | HMAC( user name|expiration time|data|sessionid, key)

したがって、基本的には、SSL セッション ID に基づいて一意の確認コードを作成しています。

REMOTE_ADDR またはユーザー エージェントは考慮に入れられないことに注意してください。これが使用する唯一の要因は、クライアント ボックスを物理的に侵害しない限り、スプーフィングが非常に重要なものです...

于 2013-06-21T11:23:34.820 に答える