CFID と CFTOKEN を使用する場合、潜在的なセキュリティの問題に注意する必要があります。これらの問題は、代わりに J2EE セッション管理を使用するだけで解決できます。以下は、 ColdFusion のドキュメントからの抜粋です。
クライアント識別子とセキュリティ
次のクライアント識別子の問題は、セキュリティに影響を与える可能性があります。
- CFToken 識別子の一意性と複雑性の確保
- セッション識別子の利用を制限する
次のセクションでは、これらの問題について説明します。
CFToken の一意性とセキュリティの確保
デフォルトでは、ColdFusion は CFToken 識別子に 8 桁の乱数を使用します。この CFToken 形式は、ほとんどの状況でユーザーに一意で安全な識別子を提供します。(ColdFusion では、この数値を生成する方法として、サーバーの起動時にのみシードされる暗号強度の乱数ジェネレーターが使用されます。)
ただし、ColdFusion Administrator では、[設定] ページを有効にして、より複雑な CFToken 識別子を生成できます。[UUID を cftoken に使用] オプションを有効にすると、ColdFusion は、ColdFusion UUID の前に 16 桁のランダムな 16 進数を付加して CFToken 値を作成します。結果の CFToken 識別子は次のようになります。
3ee6c307a7278c7b-5278BEA6-1030-C351-3E33390F2EAD02B9
セッション セキュリティの提供
ColdFusion は、Client スコープと標準の Session スコープに同じクライアント識別子を使用します。CFToken と CFID の値は一定期間にわたってクライアントを識別するために使用されるため、通常はユーザーのブラウザーに Cookie として保存されます。これらの Cookie は、クライアントのブラウザーがそれらを削除するまで存続しますが、これにはかなりの時間がかかる可能性があります。その結果、ハッカーは、ColdFusion がセッションごとに異なるユーザー ID を使用する場合よりも、これらの変数により多くアクセスできます。
ユーザーの CFToken および CFID Cookie を持つハッカーは、盗んだ CFToken および CFID Cookie を使用してユーザーのセッション中に Web ページにアクセスすることにより、ユーザー データにアクセスする可能性があります。このシナリオはありそうにありませんが、理論的には可能です。
この脆弱性は、ColdFusion Administrator の [メモリ変数] ページで [J2EE セッション変数を使用] オプションを選択することで削除できます。J2EE セッション管理メカニズムは、セッションごとに新しいセッション ID を作成し、CFToken または CFID Cookie 値を使用しません。
セキュリティ関連の変更
ColdFusion 9 Upgrade 1 にアップグレードすると、次のセキュリティ関連の仕様が適用されます。