理想的には、2 つのサイトが共通ドメイン (例:forum.example.com
とrails.example.com
) のサブドメインであるか、同じドメイン ( www.example.com
. ] または共有ドメインの場合は、両方のアプリケーションがそれにアクセスできるようにするため)、Cookie には以下が含まれます。.example.com
.
example.com
www.example.com
- の
user ID
- a
salt
(ログイン時に計算されるランダムな値)、および
SHA-2 signature
トリプレット ( user ID
+ salt
+ a ) に対して計算されたa shared secret key
。ここで、共有秘密鍵は両方のサイトで知られている秘密文字列です。
各サイトはCookie からuser ID
andを取得し、(2 つのアプリケーションだけが認識している) を使用して、Cookie に格納されていると一致する必要があるを計算できます。salt
shared secret key
SHA-2 signature
SHA-2 signature
一致する場合SHA-2 signatures
は、ユーザーが認証されていると見なすことができます。そうでない場合は、ユーザーに再度ログインを強制します。
ログオフ時に Cookie を破棄する必要があります。
細字
セッション ハイジャックから保護するには、2 つのサイトで行われるすべての要求を SSL で暗号化する必要があります (https を使用します)。これが不可能な場合は、クライアントの IP アドレスとブラウザーの種類とバージョン (ユーザー エージェント) に基づくハッシュを使用する必要があります。おそらくログイン時に計算され、Cookie にも保存されます。各リクエストを処理する前に、クライアントの IP アドレスとユーザー エージェントに対して再チェックする必要があります。ハッシュベースのアプローチは、あいまいさによるセキュリティであり、だまされる可能性があります。さらに、プロキシのプールの背後から、またはTORを使用してインターネットにアクセスしているユーザーは、別のプロキシまたは出口ノード (別の IP アドレスを持つ) が要求を転送するたびに、システムによって追い出される可能性があります。