3

ユーザーがログインしたときに、特定のパス(たとえば)に制限されたセッションCookieを設定しようとして/fooいます。ログインページがオン/になっているという複雑な問題がありますが、リクエストはすぐににリダイレクトされ/foo/somethingます。このようなもの:

リクエスト:

POST / HTTP/1.1

username=foo&password=bar

応答:

HTTP/1.0 302 Found
Location: http://example.com/foo/home
Set-Cookie: session=whatever; path=/foo

ただし、私が見つけたRFCの関連ビット(rfc2109およびrfc2965)は次のように述べています。

セキュリティ違反またはプライバシー違反の可能性を防ぐために、次のいずれかに該当する場合、ユーザーエージェントはCookieを拒否します(その情報を保存してはなりません)。

  • Path属性の値は、request-URIのプレフィックスではありません。

..。

上記のCookie設定プロセスは問題なく機能しているようですが、RFCが言っている限りでは、機能しないはずです。

これを本番システムで使用したいのですが、後で恐ろしいブラウザの非互換性の問題に直面する場合は、実際には使用したくありません。

RFCを読み間違えていますか?

前もって感謝します!

4

2 に答える 2

1

これらのRFCには注意を払わないでください。彼らは現実からかなりひどく逸脱しています。

現在、実際のCookieの動作を文書化したIETFWGがあります。彼らのドキュメントは単なるドラフトですが、はるかに優れたソース資料です。

参照: http ://datatracker.ietf.org/doc/draft-ietf-httpstate-cookie/

ドラフトで質問に対応するテキストが見つからない場合は、ワーキンググループに提出してください。

于 2010-04-30T06:59:27.090 に答える
0

あなたの質問に基づいて、RFCのあなたの理解は正しいと思います。'/ foo/home'へのリダイレクト後にCookieを設定したいようです。本当の質問は、「ユーザーが「/」によって正しく認証されたことを「/ foo /home」にどのように伝えるか」だと思います。

'/'から'/foo / home'に移動するためにLocationヘッダー(リダイレクト)を使用する必要がある場合、これを行う唯一の方法は、Locationヘッダーの値でクエリ文字列パラメーターを使用することです。

おそらく、考慮すべき設計上の質問は、ユーザーが安全にアクセスするパスの外側のURLに対して認証するのはなぜですか?安全なコンテンツが「/foo」の下にある場合は、認証のために「/」ではなく「/ foo / login」にPOSTしてみませんか?

于 2010-01-27T14:13:36.263 に答える