見出し画像

【サイバーセキュリティ】クッキーってどう受け渡しするの!?HTTPの仕組み

はい、こんにちは~。前回記事からの続きです。サイバーセキュリティを学ぶ前提知識として重要な「HTTPの仕組み」を紹介しています。

前回までの記事で、ヘッダーフィールドの基本4種をご紹介しました。

  • 一般

  • リクエスト

  • レスポンス

  • エンティティ

の4種類でしたね!人は情報を分類すると記憶に定着させやすいようですね。だいぶスッキリしました!

そして今回注目したいのは、「クッキー」です!このクッキーの仕組みを支えているのが、実はHTTPです。HTTPヘッダーフィールドを通じてクッキーが受け渡しされるのです。

ウェブサイトを訪れると、「クッキーを受け入れますか?」などとよく聞かれますね。「食べるクッキー」だったら喜んでいただきますがw。

クッキーは、効率的で快適なウェブ利用を実現する重要な技術の一つです。しかし、オンラインショッピングなどで活用されますから、攻撃者にも狙われやすいものです。ならばぜひ学んでおかなくては。

ということで、クッキーについて知ることにしましょう!

そもそもクッキー(Cookie)とは?

まずは、念のため「クッキーとは何か」を確認しておきましょう。

クッキーとは、例えていえば、ウェブサービス版の「会員証」みたいなものです。

サーバがユーザを識別したり、これまでのサービスの利用状態などを管理することができます。場合によっては認証にも使われます

クッキーの発行はサーバ側で行い、届いたクッキー(という名の小さなデータ)をクライアントが保管します。クライアントがサーバにアクセスするときは、そのクッキーをサーバに提示するわけです。

例えば、ショッピングカートに入れたアイテムの情報や、フォームに入力した情報を保持するのに役立つものです。

以上で、クッキーの概要は分かりました。

クッキーを実現するヘッダーフィールド

クッキーの機能を実現するためのヘッダーフィールドは2つあります。

Set-Cookie

サーバがクライアントにクッキーを送るためのヘッダーフィールドです。このフィールドで、いくつかの属性を送ることができます。

例えば、クッキーの名前(name属性)、クッキーの有効期限(expires属性)、クッキーが適用されるドメインの範囲(domain属性)などを指定することができます。

ただ、セキュリティという文脈で重要な属性とされているのが、実は、secure属性とHttpOnly属性の2つです。

Secure属性を指定すると、クライアントはHTTPSで通信が暗号化してあるときのみ、クッキーをサーバに送りかえします。これでクッキーを読み取られるリスクを抑えられます。

HttpOnly属性を指定すると、Javascripitのスクリプトを使ってクッキーを読み出せなくなります。となれば、XSS(クロスサイトスクリプティング)などでクッキーを読み取られるのを防ぐことができます。

こう見てみると、2つの属性ともかなり重要ですね!

Cookie

こちらは、クライアントがサーバにクッキーを使って状態管理をしてもらうまために送るヘッダーです。保存したクッキーを送りかえすのが仕事であり、特に追加する属性がありません。


ということで、今回はクッキーと、それの実現に使われる2つのヘッダーフィールドをご紹介しました。のちのち、ウェブのセキュリティについてしっかり学びたいと思っている私は、Set-Cookieの属性についてしっかり理解しておこう!と思いました。

では、次回は、ヘッダーフィールドを離れて、HTTPを使った認証について学んでいきたいと思います。

では!

この記事が気に入ったらサポートをしてみませんか?