HTTPプロトコルのセッション管理

インターネットを閲覧したりネットショッピングをしたりするためには、当然ながら何らかのWebブラウザを使って、インターネット上のWebページを閲覧して利用します。普段から何となくWebブラウザ使っていると、特定のWebページを開いている間は、ずっと閲覧中のページと通信を行っていると考えている人もいると思います。しかし実際には、Webページを表示した後は、Webページを開いていても閲覧中のWebページとのコネクション(通信網)は、切断されてしまっています。これは、HTTPプロトコルの標準の仕様となっており、どこのWebページを開いていても、コネクションが閉じられることは同じです。

 

利用者の判別を行わないWebページでは、1つ1つのWebページでコネクションが閉じられても問題ないのですが、ショッピングサイトなどの会員制のサイトにおいては、利用者の判別ができなくなるため、一度ログインしても次のWebページへ移動したときに、自動的にログアウトしたことと同様な動作となってしまいます。これは、HTTP通信の規約がステートレスであることから起こる問題ですので、何らかの対処法を取らなければなりません。

 

解決法として、Cookie(クッキー)を利用することでWebページ側が、利用者を判別して解決することができます。このCookieとは、ただのテキストファイルなのですが、利用者のアカウント情報やログイン状態などをテキストとして保存します。そして、Webページにアクセスするときに、同時にこのCookieと呼ばれるファイルをWebページ側に送信することで、利用者を判別することになります。

 

しかし、これでは問題があります。Cookie自体は、例えSSLを利用した暗号化通信に設定していても、利用者のアカウント情報は通信網を平文で送ってしまうということです。となると、さらにひとひねりしなければ、安全なデータのやり取りは保てません。この問題については、利用者のアカウント情報やログイン状態などをWebページ側で管理することで解決できます。Cookieには、アカウント情報ではなく利用者のWebブラウザごとに一意となるランダムな文字列を設定しておいて、この文字列をWebページ側で保管している利用者のアカウント情報などの鍵として扱うことで、例え一意の文字列を盗まれても、次にアクセスするときには、別の一意となる文字列を鍵として扱うためセキュリティー的にも、安全でステートフルな通信を確保できるようになります。

 

銀行のWebページなどでは、さらに厳重なセキュリティー対策をされていることも多いのですが、一般的なhttps通信ではこの方法が利用されていることが多いようです。また、複数のプログラミング言語でも、このセキュリティーが保証されたCookieのやり取りを行う仕組みを実現できますが、いずれにせよ、アカウント情報を管理するWebページはこの最低限の通信方法を利用していることが多いです。

 

ちなみに、Webページに表示される画像ファイルもステートレスであるため、htmlファイルとは別に取得する方法をとっております。

 

Follow me!