■ 設計と実装は大丈夫か?(2) 今回も引き続きWEBサイトを構築するにあたり、注意しなければならない事項をまとめてゆくことにする。■セッション管理は強固か? セッション管理とはそもそも何か?簡単に言ってしまえば交通整理のようなものだ。銀行の窓口で取る整理券というのが近いイメージではないだろうか。来店するお客は整理券を取り、窓口では預かった通帳を整理券と名前で管理(呼出し)するようになっていると思う。Webの世界ではこの仕組みをセッション管理と呼んでいる。しかしHTTPプロトコルはもともとセッションを管理する仕組みが無いステートレスな通信で、このままだと、Webサイトにアクセスして来た各ユーザが誰で、何をしているのかが把握出来ず、混乱になってしまう。 特にECサイトをはじめとする、個別のユーザを識別しなければならないようなサイトには必須の機能である。しかし残念ながらこれぞ決定版というようなセッション管理方法が存在せず、様々な実装方法があるが、この管理方法に問題がある場合、サイト全体が極めて脆弱となり、他人のセッションを奪われ、成りすましや、不正な買物をされる等の被害、個人情報の漏洩へと発展する可能性がある。 強固なセッション管理がどのようなものかを紹介すると一冊の本になってしまう。ここではいくつかのチェックポイントでセッション管理の強度を確かめる方法を紹介することにする。 1.何回かログイン、ログアウトを繰り返し、同一、又は固定のセッションIDが使用されていないかをチェックする。 多くの場合、セッションIDをCookieに格納する形で使用されているので、URLバーに「javascript:document.cookie」と入力し、エンターを押せば、現在使用しているセッションIDを含むcookieの内容が表示されるようになっている。 このセッションIDが固定の場合、一般的にはあまり推奨される作りでは無いと言われている。セッションIDは長く、アクセスする度に変化し、尚且つ推測出来ないものが理想とされている。開発元にその仕様が安全であるかを確認した方が良いだろう。 2.セッションIDは漏れることを前提に生成されているかをチェックする。 容易に判別、解析、推測可能なセッションIDはどのような使われ方(cookieに格納する、URLパラメータで使用する等)をされていても危険なものだと考えた方が良い。 セッションID生成用に自前で発明、開発された暗号を解き明かすのは時間の問題だと考えた方が良いだろう。【執筆】三井物産セキュアディレクション株式会社 目崎 匠 http://www.mbsd.jp/ この記事には続きがあります。 全文はScan Security Management本誌をご覧ください。 http://www.ns-research.jp/cgi-bin/ct/p.cgi?ssm01_ssmd