6.4 セッション管理
|
||
前のページへ |
セキュアなセッション管理を実現するには、以下の点を考慮する必要がある。
Webサーバー側でセッションIDを発行する際、ランダムで容易に推測できない値にするべきである。規則性を持った(例えば0001、0002、0003のような)セッションIDを発行してしまうと、容易にセッションハイジャックによるなりすましが発生する危険性がある。また、複数の同一セッションIDを生成してしまうと、同様の脅威を招いてしまうので、完全にユニークなセッションIDを生成する。さらにセッションIDが暗号化されていれば、意図的に推測するするのはさらに困難となる。
1つのセッションが終了(ログアウト)した場合、もしくはタイムアウトが発生した場合、そのセッションに使用していたセッション情報は破棄するべきである。破棄されずにセッション情報が漏洩してしまうと、なりすましの脅威を招く危険性がある。
hiddenフィールドを利用して、セッション情報をWebサーバーに送信する際、セキュリティの面から、POSTメソッドを使用してデータ送信を行う。GETメソッドでデータ送信を行うと、その情報が下記のようにURLのクエリ文字列に含まれるので、情報漏洩やデータ改ざんを招きやすい(注1)。POSTメソッドを使うと、送信データはブラウザのURL部に表示されずに送信される。しかしながら、盗聴の脆弱性がある場合はリスクを招く危険性がある。
GETメソッドを利用した場合のURL:
http://www.ipa.go.jp/login.cgi?session=1234567890
セッションIDがURLの一部として表示されてしまう
POSTメソッドを利用した場合のURL:
http://www.ipa.go.jp/login.cgi
送信データはstdin(標準入力)として扱われ、サーバーで受け取る
(注1) |
悪意あるユーザが、GETメソッドによるセッション管理を提供しているWebサーバー(電子商取引サイト)を発見すると、GETメソッドで送信されているセッションIDに規則性があるかを調査する。規則性があった場合、いろいろなセッションIDをURLで指定し、電子商取引サイトで保持している顧客情報の入手を試みる。 |
WebサーバーへのセッションID受け渡しに、hiddenフィールドを利用することができるが、hiddenフィールドは、WWWブラウザに表示されないだけで、決して隠されたフィールドではない。そのため、Webページのソースを表示するとhiddenフィールドの内容は誰にでも参照できてしまい、さらにその内容を偽証することも可能である。そのため、このフィールドで重要なデータを取り扱うことは避けるべきである。
HTTP_REFERER環境変数を使用すると、リンク元のURL情報が取得できる。したがって、セッションID情報がURLに含まれているWebページから、別ページへリンクした場合、その別ページではセッションIDを知ることができてしまうので、悪意あるユーザに知られても問題ないように、URLにセッション情報を含まないようなセッション管理が望ましい。
Cookie情報は悪意あるユーザに漏洩してしまう危険性があるので、Cookieの管理には注意が必要である。セッションIDの管理を厳密に行い(「1) セッションIDの生成方法」、「2) セッションIDの破棄」参照)、ユーザID/パスワードなどの重要データを保持しないようにWebアプリケーション側で管理する必要がある。
セッション管理 |
第6章の目次
|
第7章の目次
|
Copyright © 2002 Information-technology Promotion Agency, Japan. All rights reserved.