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

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

この動作は、セッション固定化によるセキュリティのリスクの脅威の対策となっています。セッション変数の使用が有効となっているサイト(<cfapplication sessionManagement="true"... />)に対し、サービス起動後にColdFusionは自分が発行していないCFIDやCFTOKENからのリクエストがあった時、そのIDを破棄します。そして、ColdFusionは、新しいCFID, CFTOKENを作り直します。

クラスタリング環境において、途中で別サーバー・インスタンスへColdFusionの処理が切り替わった際に、CFID, CFTOKENが再発行されてしまうため、Session変数の値が維持できなくなります。
ラウンド・ロビン等の環境にて、この問題が遭遇する場合には、セッション固定化の対策を行わない古い設定に戻すことが可能です。下記のサイトをご覧下さい。

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

(※Client変数の場合も、セッション変数の使用が有効になっているサイト(SessionManagement="true"が指定されている)場合に同様にCFID, CFTOKENが書き換わってしまいます。ColdFusion2016などではClient変数の値は維持できるようになっている模様ですがCFID,CFTOKENが書き換わる度に新しいCookieをブラウザに発行する動作となります)

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

 

 

 

 


 

記事公開日:2012年12月04日
最終更新日:2018年06月28日


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.