CookieにはWebアプリケーションでのユーザ情報やセッションIDが格納されます

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった問題

CookieにSecure属性を設定しなかったときと比較した,設定したときの動作として,適切なものはどれか。

  1. WebブラウザがアクセスするURL内のパスとCookieによって指定されたパスのプレフィックスが一致するとき,WebブラウザからCookieが送出される。
  2. URL内のスキームがhttpsのときだけ,WebブラウザからCookieが送出される。
  3. JavaScriptによるCookieの読出しが禁止される。
  4. Cookieに指定された有効期間を過ぎると,Cookieが無効化される。

平成30年春期問11 secure属性を付けたときの動作|情報処理安全確保支援士.com

Cookieは、Webサーバに対するアクセスがどのPCからのものであるかを識別するためにブラウザにユーザ情報などを保存する仕組みです。

cookie(HTTP cookie:クッキー)は、状況によって異なるページを提供したいというニーズにより開発され、ユーザ識別やセッション管理を実現する目的などに利用されています。
平成19年秋期問36 cookieの説明|基本情報技術者試験.com

https://wakaru-web.com/wp/wp-content/uploads/2018/12/cookie01-750x656.jpg
【知識】Cookie(クッキー)って何のこと?何の役に立つの? | わかるWeb

https://www.soumu.go.jp/main_sosiki/joho_tsusin/security_previous/kiso/illust/cookie.gif
基礎知識 Cookieの仕組み

シングルサインオンのユーザー認証にも使用されます。

クッキーを使うSSO

  1. 最初のログインの際には、Webサーバにインストールされたエージェントが認証サーバにアクセスで認証を行う。
  2. その認証・識別情報をクッキーに含めクライアントに返す。
  3. 別のWebサーバにアクセスがあった場合には、エージェントが認証サーバにアクセスしクッキー情報をもとに認証を行う。

平成24年秋期問36 シングルサインオンの説明|応用情報技術者試験.com

サーバごとの認証情報を含んだCookieがサーバで生成され、クライアントのコンピュータに保存されます。

https://xtech.nikkei.com/it/article/COLUMN/20080221/294407/zu01.jpg
第1回 まずは「クッキー」を理解すべし | 日経クロステック(xTECH)

f:id:ponsuke_tarou:20201015235804j:plain
月岡温泉したしみの宿東栄館のお夕飯

セッションは、サーバとの一連のやり取りの流れです。

https://www.asobou.co.jp/blog/wp-content/uploads/2017/05/session.jpg
Googleアナリティクスの基本指標を正しく理解しよう<セッション・ユーザー・ページビュー数> : ビジネスとIT活用に役立つ情報

セッションハイジャックとは、利用者のセッションIDを不正に取得しその利用者になりすましてサーバにアクセスすることです。

f:id:ponsuke_tarou:20210929194740j:plain

セッションIDによってセッションが管理されるとき,攻撃者がログイン中の利用者のセッションIDを不正に取得し,その利用者になりすましてサーバにアクセスする。
平成29年春期問23 ディレクトリトラバーサル攻撃|情報セキュリティマネジメント試験.com

セッションハイジャックされると、Cookieの情報では正規ユーザーによる操作なのかは判別できません。

セッションハイジャック等によって、ログイン中のセッションが第三者に乗っ取られても、URLやCookieに格納されているセッションIDが正規のものである限り、Webアプリケーション側では「攻撃者によって乗っ取られたリクエスト」なのか「正規ユーザによるリクエスト」なのかの区別がつきません。
平成28年春期問41 ブラウザに送信する直前に行う対策|応用情報技術者試験.com

https://xtech.nikkei.com/it/article/COLUMN/20080221/294407/zu02.jpg
第1回 まずは「クッキー」を理解すべし | 日経クロステック(xTECH)

Webアプリケーションのセッションが攻撃者に乗っ取られた場合は、重要な情報をWebブラウザに送信する直前にはパスワードによる利用者認証などを行う必要があります。

Webアプリケーションのセッションが攻撃者に乗っ取られ,攻撃者が乗っ取ったセッションを利用してアクセスした場合でも,個人情報の漏えいなどの被害が拡大しないようにするために,Webアプリケーションが重要な情報をWebブラウザに送信する直前に行う対策として,最も適切なものはどれか。

エ. パスワードによる利用者認証を行う。
平成28年春期問41 ブラウザに送信する直前に行う対策|応用情報技術者試験.com

CookieからセッションIDをパクられるとセッションハイジャックされます。

セッションハイジャック対策

  • 「推測」への対抗
    • 予測困難なランダム値を使う
    • ログイン(ユーザ認証)成功のたびに異なる値を使う
  • 「奪取」への対抗
    • TLS を使用する
    • Cookieにsecure属性をつける
    • Cookieの「寿命」を短めにする
    • ログイン成功時にセッションIDを発行し直す

IPA『セキュア・プログラミング講座(Webアプリケーション編)』ブートアップセミナー資料

利用者のログアウト時には、WebサーバにおいてセッションIDを無効にします。

f:id:ponsuke_tarou:20200914221825p:plain
IPA『セキュア・プログラミング講座(Webアプリケーション編)』ブートアップセミナー資料

Webシステムにおいて,セッションの乗っ取りの機会を減らすために,利用者のログアウト時にWebサーバ又はWebブラウザにおいて行うべき処理はどれか。ここで,利用者は自分専用のPCにおいて,Webブラウザを利用しているものとする。

イ. WebサーバにおいてセッションIDを無効にする。
平成30年春期問43 セッションハイジャック対策|応用情報技術者試験.com

CookieにSecure属性を設定することで、httpsのときだけWebブラウザからCookieが送出されます。

 secure属性が指定されていないと,暗号化されていない通信経路上にクッキーが送信されてしまい,盗聴される危険がある。最近の開発環境では,アプリケーション・サーバーや,フレームワークがsecure属性の設定を自動的に設定することが多いため気付きにくいかもしれない。マニュアルを確認し,正しく設定する必要がある。
第1回 まずは「クッキー」を理解すべし | 日経クロステック(xTECH)

Cookieを発行する際に指定できる属性にはほかにもいろいろあります。

  • Domain : cookieを送信するドメインを指定する属性。
  • Path : cookieを送信するURLディレクトリを指定する属性。
  • Expires : cookieの有効期限を指定できる属性。指定しない場合の期限はブラウザの終了時まで。
  • HttpOnly : この属性が設定されたcookieJavaScriptからアクセスできなくなる。

情報セキュリティスペシャリスト平成26年春期 午前Ⅱ 問10

 expires属性は,被害が発生してしまう可能性と関連する。この指定がある場合,指定された日時までクッキーが送信される。つまり,クッキーは指定された日時までファイル上に保存され,ブラウザ再起動後もその値が読み込まれ使用される。指定がない場合,有効期限はブラウザが終了するまでとなる。

 この属性が指定されていなければ,ブラウザを起動していないユーザーが被害に遭うことはない。しかし,この属性が指定されていると,ブラウザ起動時にクッキーが自動的に読み込まれ送信されるため,ブラウザを起動していないユーザーも被害に遭う対象となる。この属性は,オートログイン機能を実現するために設定されることが多いが,このようなリスクが発生することは認識しておかなければならない。
第1回 まずは「クッキー」を理解すべし | 日経クロステック(xTECH)

f:id:ponsuke_tarou:20201015235704j:plain
月岡温泉したしみの宿東栄館のお夕飯

次回の勉強内容

ponsuke-tarou.hatenablog.com