要約
draft-ietf-httpbis-layered-cookies-02の HttpOnly は Cookie を HTTP 要求の範囲に制限し、非 HTTP API からのアクセスを抑える。値の由来、主体、認可、業務結果を認証する属性ではない。- Cookie はポートで分離されず、Path も完全性境界ではなく、兄弟ドメインが広い Domain 値へ影響し得る。受信後のサーバー検証が権限を決める。
ブラウザーのスクリプトはセッション Cookie を読めなかった。監査はそれを「信頼できるサーバーだけが作成可能」と記録した。しかし兄弟ホストがより広い Domain で同名状態を設定できる構成だった。
HttpOnly は役割を果たしていた。監査が、その役割を由来証明へ拡張していた。
Cookies: HTTP State Management Mechanism 第 02 版は 2026 年 5 月 21 日に IETF HTTP ワーキンググループのアクティブな Internet-Draft として公開され、11 月 22 日に失効予定である。標準化トラックを意図し、承認されれば RFC 6265 と 6265bis を廃止すると述べるが、現在は RFC でも実装調査でもない。
HttpOnly の権限は API 面で終わる
HttpOnly があると、ユーザーエージェントは document.cookie のような非 HTTP API から値を公開しない。スクリプトによる直接窃取の一部を抑える重要な制御だ。
一方、適格な HTTP 要求には自動添付される。受信サーバーは値を読む。どのアプリケーションが最初に設定したか、セッションが取り消されていないか、本人が今回の操作を意図したかは属性から分からない。
したがって記録は「非 HTTP API に公開されなかった」と書くべきで、「信頼できる主体が認証済み」と書いてはならない。前者はブラウザー制御、後者はサーバー判断である。
良い制御を過大評価すると、残った攻撃面が所有者不在になる。
Domain は配送範囲であり作者名ではない
Domain を省略した Cookie はホスト限定になる。Domain を指定すると、対象ドメインと適格なサブドメインへ返される。公開サフィックス規則は無関係な登録領域への拡張を防ぐが、兄弟アプリを互いに信頼させない。
草案は、foo.site.example が site.example の Cookie を設定し、bar.site.example へ送らせ得ると説明する。Bar は自分が設定した値と区別できない最悪例もある。
HttpOnly はこの兄弟間完全性問題を解かない。Secure も配送チャネルを制限するだけで、作者を署名しない。
host-only と __Host- は範囲を狭める。さらにサーバーは値の署名、受信者、セッション台帳を検証しなければならない。
Path とポートは別の不一致を持つ
Path はどの URL パスで送るかを選ぶ。あるパスの応答が別パス向け Cookie を設定できるため、相互に信頼しないサービスの完全性隔離にはならない。
ポートも Cookie を隔離しない。Web Origin が scheme・host・port を区別しても、Cookie の座標は同じではない。別ポートへ移した管理サービスが同じセッションを受け取る場合がある。
アーキテクチャは、ブラウザーの全機能が同一の境界を使うと仮定してはならない。Path と port は配置・選択情報であり、Cookie の作者権限を独占しない。
相互不信があるならホストを分け、サーバー状態を想定コンテキストへ束縛する。
Secure と TLS は保管履歴を再構成しない
Secure は安全なチャネルでのみ送るよう指示する。TLS 1.3 は接続を保護し、相手を TLS の意味で認証する。
しかし Cookie は TLS 開始前にストアから選択される。別の適格ホストが設定した値、同名別 Path、無効なセッションが安全に運ばれることは可能だ。
草案は Cookie の歴史的弱点として、Secure だけでは能動攻撃者に対する完全性を全面的に与えない点も記す。いずれにせよ、受信アプリケーションの検証は消えない。
安全配送は必要条件になり得るが、由来・本人性・認可・commit の十分条件ではない。
SameSite も人間の同意ではない
SameSite はサイト間文脈で Cookie を送る条件を変え、CSRF の一部を緩和できる。要求が人間の意思から生まれたことを証明するわけではない。
ブラウザーは Cookie を環境権限として自動添付する。別主体が URL を指定し、秘密を知らないまま利用者の状態を運ばせることがある。
重要操作には、要求に束縛された anti-CSRF 材料、freshness、確認または同等の意図証拠が必要だ。その後、認可判断と結果回执が必要になる。
SameSite が適切でも、Cookie-header の存在だけで「利用者が承認した」としてはならない。
期限は最大値であって保存 SLA ではない
Expires と Max-Age は最大寿命を指定する。ユーザーエージェントは quota、memory、privacy、利用者操作で早く削除できる。
消失はサーバーログアウトを証明しない。存在もサーバーセッションの有効性を証明しない。クライアント保管とサーバー権限は別のライフサイクルだ。
削除要求も正しい Domain と Path を合わせなければ対象を消せない。同名別スコープが残れば、画面上の logout と実際の送信状態がずれる。
確実な logout はサーバー権限を失効させ、既知スコープを消去し、古い値の後続拒否を確認する。
同名 Cookie の順序を権限にしない
名前は大文字小文字を区別する。さらに同名 Cookie が異なるスコープで同時に送られる場合がある。サーバーはヘッダー順序に依存すべきでない。
単純な文字列 parser が最初の値を採用すると、プロトコルが定めない優先順位を自ら作る。攻撃者や隣接アプリは、その実装癖を利用できる。
監査には重複名、case、想定スコープ、選択ロジックと検証結果を残す。秘密そのものは記録しない。
権威は位置ではなく、サーバーの明示的検証から生まれる。
情報源と限界
凍結資料は第 02 版、Datatracker、HTTP WG、RFC 6265/6265bis、HTTP、TLS 1.3、WHATWG Origin/URL、IANA、Public Suffix List を含む。
仕様を示すが、特定ブラウザーの挙動、実事故、導入率は示さない。冒頭は証拠境界を調べる構成例である。
出典
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-layered-cookies/
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-layered-cookies/history/
- https://www.ietf.org/archive/id/draft-ietf-httpbis-layered-cookies-02.html
- https://www.ietf.org/archive/id/draft-ietf-httpbis-layered-cookies-02.txt
- https://datatracker.ietf.org/wg/httpbis/about/
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-layered-cookies/referencedby/
- https://www.rfc-editor.org/rfc/rfc6265.html
- https://datatracker.ietf.org/doc/draft-ietf-httpbis-rfc6265bis/
- https://www.rfc-editor.org/rfc/rfc9110.html
- https://www.rfc-editor.org/rfc/rfc8446.html
- https://html.spec.whatwg.org/multipage/browsers.html#origin
- https://url.spec.whatwg.org/
- https://www.iana.org/assignments/http-fields/http-fields.xhtml
- https://publicsuffix.org/list/
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
