クラスタ環境のColdFusionで別サーバー・インスタンスに切り替わった際のCFセッションID動作

ColdFusion 9.0.2, ColdFusion 10 または、セキュリティアップデートを適用した ColdFusion 8.0.x, 9.0.xの環境にて、クラスタ構成で動かしている場合、あるサーバーで処理を行っていたプログラムが別サーバーに切り替わった際にCFID, CFTOKENが別のIDに切り替わります。なぜなら、切り替わったColdFusionサーバーでは、その番号でCFIDやCFTOKENを作成した事がないからです。

この動作は、セッション固定化によるセキュリティのリスクの脅威の対策となっています。サービス起動後に、ColdFusionは自分が作成していないCFIDやCFTOKENでリクエストがあった時、そのIDを破棄します。そして、ColdFusionは、新しいCFID, CFTOKENを作り直します。

ただし、この場合クラスタリング環境において、途中で別サーバー・インスタンスへColdFusionの処理が切り替わった際に、CFID, CFTOKENが再発行されてしまうため、これまでのセッションが維持できません。

ラウンド・ロビン等の環境にて、この問題が遭遇する場合には、セッション固定化の対策を行わない古い設定に戻すことが可能です。下記のサイトをご覧下さい。

http://helpx.adobe.com/coldfusion/kb/security-hotfix-coldfusion-8-8.html
(※上記ページの Issue に注釈が付けられている通り、JVMプロパティ -Dcoldfusion.session.protectfixation=false をJVM引数に追加して下さい。)

旧設定に戻すことについては、注意すべき事項があります。それは、あなたが動かしているアプリケーションが、セッション固定化によるセキュリティのリスクに対して、対策を行っているかを必ず確認下さい。例えば、ColdFusion10は、新たにsessionrotate()関数が追加されていますので、ログイン成功時などの要所においてセッションIDなどを切り替えることが有効な対策の一つです。他にも、セッションIDに加えて独自のランダムなパラメーターをCookieやフォームなどに追加する、cflogin、携帯サイトなどは端末IDも組み合わせて使用する、URLパラメーターにCFID,CFTOKENが付いているページで初期ページ(ログインページやトップページ等)にリクエストがあった場合は、URLパラメーターからそれらを取り除いて同ページをリクエストし直す、Application.cfcを使ってonSessionStart()時の処理で既存のCFID,CFTOKENを破棄して、初期ページをリクエストし直す等など、さまざまな方法があります。セッションIDが固定化されたリクエストがあった場合の対応が適切に取られているかをご確認下さい。

 

 

 



記事公開日:2012年12月04日
最終更新日:2013年04月04日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.