jsessionid cookieの secure属性について

ColdFusionはデフォルトでCFIDとCFTOKENの2つのIDを使用してユーザーのセッションを識別しますが、ColdFusion Admiinstratorの「サーバーの設定 > メモリ変数」で『J2EEセッションの使用』を有効にすることで、jsessionidに切り替えることができます。CFID、CFTOKENの2つのIDを使ったセッション管理はColdFusion専用であるのに対して、jsessionidはColdFusion Enterpriseで同一アプリケーション内のcfmページとJSP・サーブレットの間でセッション変数を共有することなどが可能です。

以前のColdFusionではCFID,CFTOKENのセキュア性がjsessionidよりも低い(クッキーの永続化やCFTOKENのランダム性、httponly、クラスタ環境でのセッションフェイルオーバー等)がありましたが、現在ではそれらはCFID, CFTOKENでも実装や代替手段があるため、jsessionidとCFID, CFTOKEN の有効性は同等であるといえます

jsessionidはColdFusionではなく、内部エンジンであるTomcat(Java EE)で発行されています。ColdFusion Administratorの「サーバーの設定 > メモリ変数」ページにある『セッション Cookie 設定』はそこで説明されている通り”ColdFusion セッション Cookie のプロパティ”であり、jsessionidには該当しません。

表題のSecure属性についても、ColdFusionのセッションID(CFID, CFTOKEN)では『セッション Cookie 設定』やApplication.cfcのプロパティcfapplicationタグのsessioncookie属性で設定が可能ですが、jsessionidには適用できません。

jsessionidについては、TomcatがCookieを発行する際、httpsリクエスト時にはSecure属性を付与し、httpリクエスト時にはSecure属性を付けない動作となります。

【参考】
https://atmarkit.itmedia.co.jp/bbs/phpBB/viewtopic.php?topic=5722&forum=12
https://github.com/apache/tomcat/blob/9.0.x/java/org/apache/catalina/core/ApplicationSessionCookieConfig.java

注意が必要なのは、リクエストをハードウェアロードバランサ(HLB)で受けて、HLBからColdFusionサーバーにバインドして処理を行っているような場合、ブラウザ~HLBの通信はhttpsでも、内部のHLB~ColdFusionの通信はhttpとなり、Secure属性が付加されないなどがあります。リクエスト時のhttp/httpsリクエストに関わらず、jsessionid CookieにSecure属性を付加した場合は、Tomcat側の設定ファイルで行います。[cf_root]/{インスタンス(cfusion等)}/runtime/conf/web.xmlに<session-config>の設定がありますので、下記のように設定を追加します。

    <session-config>
        <session-timeout>30</session-timeout>
        <cookie-config>
          <http-only>true</http-only>
          <secure>true</secure>
        </cookie-config>

    </session-config>

※念のため、作業前にweb.xmlファイルをバックアップして頂くことをお勧めします。
※設定を反映するために「ColdFusion 2021|2018 Application server」サービスの再起動が必要です。

【参考】
https://geekflare.com/secure-cookie-flag-in-tomcat/
https://community.adobe.com/t5/coldfusion-discussions/how-to-set-up-httponly-and-secure-flag-for-session-cookies/td-p/6448928/page/2


 


記事公開日:2022年06月17日
最終更新日:2022年06月17日


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.