1

それにアクセスするための暗号化された認証情報を含むクエリ文字列を含むpage A別の URL を生成するがあります。page B'spage B

ユーザーがその URL を使用して にアクセスするときにpage B、認証情報を含む Cookie をユーザーのローカル マシンに書き込みたいと考えています。

リファレンスを読んだところMSDN、リクエストとレスポンスを通じて Cookie を生成して読み取ることができると書かれていますが、特定の場所に Cookie を書き込む方法はありますか?

Cookie を生成する前に、ユーザーのローカル マシンに既存の Cookie があるかどうかを確認する方法もありますか。

前もって感謝します。

4

2 に答える 2

4

リクエストを実行しているサイトと同じドメインにない Cookie を確認したり設定したりする方法はありません。

Cookie を設定しているサイトと同じオリジンの Cookie のみを設定または読み取ることができます。これは HTML に組み込まれているセキュリティ機能であり、回避することはできません。

なぜこれがこの方法なのかを簡単に理解できる例として、 のwww.myEvilSiteThatStealsYourData.comCookie を読み書きできるようにしますwww.theBankingWebsiteYouUse.comか?

于 2013-08-01T14:18:20.760 に答える
0

ページ A の URL には、暗号化された UserID と対称的に暗号化されたタイムスタンプ (/B?SecurityToken=blabla など) が含まれている必要があり、ページ B はセキュリティ トークンを復号化し、タイムスタンプが古すぎないことを確認し (1 分で十分なはずです)、に基づいて Cookie を作成する必要があります。復号化されたセキュリティ トークン。

より堅牢なシナリオ: A (ID プロバイダー) は、トークンをまったく使用せずにユーザーを B (サービス プロバイダー) に送信します。B は、ユーザーが B ドメインに認証 Cookie を持っているかどうかを確認します。持っていない場合、B はユーザーを A の単一のログイン ハンドラーにリダイレクトします。ユーザーが A ドメインに認証 Cookie を持っている場合、A は B に暗号化された応答を送信し、ユーザーに関する情報 (ユーザー ID など) を提供します。 A はユーザーに資格情報を要求し、それらが正しい場合、A は暗号化された応答を B に送信します。B は UserID を復号化し、B ドメインに認証 Cookie を作成します。これにはプロトコル (SAML、OAuth) もあります。同様に、facebook や google を使用してアプリの ID プロバイダーを実行できます。

于 2013-08-01T14:41:37.530 に答える