Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on 6月 28, 2005 in ハッキング | 0 comments

セッションハイジャックとは?(1)

今回は、「セッションハイジャック」のお話をしてみたいと思います。

Webを見るときのHTTPの話なので、まずはHTTPの仕組みをおさらいしましょう。

ブラウザとWebサイト(Webサーバ)は、HTTPという手段を使ってやりとりをします。

そして、HTTPというプロトコル(通信手段)は、「ステートレス」という特徴を持っています。

どういうことかというと、ブラウザがHTTPで何かをダウンロードするときには、「GET」コマンドというものを使います。

例えば、「index.html」というWebページと「index2.html」というページを取得する場合には、以下のように接続します。

1. クライアントがWebサーバに対して「index.html」ファイルを要求

  『GET /index.html HTTP/1.0』

2. Webサーバがクライアントに、「index.html」を渡す

3. クライアントがWebサーバに対して「index2.html」ファイルを要求

  『GET /index2.html HTTP/1.0』

4. Webサーバがクライアントに、index2.htmlを渡す

このような形で、欲しいページやファイルがあった場合には、一回ずつGETコマンドというものを使って、Webサーバに要求します。

だから、上記の1と3は関連性がありません。なのでWebサーバに取っては、1がクライアントAで、2がクライアントBでも、わからないんです。

これが「ステートレス」、つまり「状態を覚えていない」という意味ですね。

では、会員制のサイトなどで、ユーザ名やパスワードを使ってログインする場合を考えてみましょう。

あれって、ログインした時の通信と、その次にページを見るときの通信が同じユーザだとわかってるはずですよね?

つまり上記の1と3を同じユーザからのセッションだと判別する仕組みが必要なんです。

それを解決するのが「Cookie」(セッションID)です。

※Cookieは以下を参照してください

■クッキー(cookie)は危険?

2で応答を返すときに、Webサーバが「Cookie」というセッションを覚えさせるために利用するIDを同時に渡します。

そして、3の要求をする時に、2でもらったCookieをWebサーバに渡すことで、1のセッションと3のセッションを同一のユーザであると、関連付けることができるんですね。

でも、このCookieを他のユーザが利用して、ファイルの取得要求の際、Webサーバに渡したらどうなるでしょう?

これがセッションハイジャックです。

次回はもう少し詳しく見てみましょう。