CFAPPLICATION  
説明

ColdFusion アプリケーションのスコープを定義します。クライアント変数のストレージを有効または無効にし、クライアント変数のストレージメカニズムを指定します。また、セッション変数を有効にし、アプリケーション変数のタイムアウトを設定します。

 
カテゴリ

アプリケーションフレームワークタグ

 
シンタックス
<cfapplication
   name = "application_name"
   loginStorage = "cookie"、"session"
   clientManagement = "yes"、"no"
   clientStorage = "datasource_name"、"Registry"、"Cookie" のいずれか
   setClientCookies = "yes"、"no" 
   sessionManagement = "yes"、"no"
   sessionTimeout = #CreateTimeSpan(days, hours, minutes, seconds)#
   sessionTimeout = #CreateTimeSpan(days, hours, minutes, seconds)#
   setDomainCookies = "yes"、"no"
   scriptProtect = "none"、"all"、list>
 
関連項目

cfassociate、cferror、cflock、cfmodule、1193ページ、第5章の「Application.cfc リファレンス」 、『ColdFusion MX 開発ガイド』の第13章の「ColdFusion アプリケーションの設計と最適化」 および第37章の「CFML アプリケーションへの J2EE および Java 要素の統合」

 
ヒストリ

ColdFusion MX 7: scriptProtect 属性が追加されました。

ColdFusion MX 6.1: loginStorage 属性が追加されました。

ColdFusion MX:

  • パーシスタントスコープの使用方法が変更されました。Server、Session、および Application スコープ変数が、メモリに構造体として保管されます。以前のリリースでは、Session スコープおよび Application スコープの変数だけがこの方法で保管されていました。また、UDF 関数のスコープには、構造体としてはアクセスできません。
  • CFTOKEN 変数値を設定するアルゴリズムが変更されました。レジストリキー UUIDToken が 0 でない場合、ColdFusion では UUID から構築された数に乱数を加えた数が使用されます。UUIDToken が 0 の場合は、正の乱数 (整数) を使用して CFTOKEN 変数のデフォルト値が設定されます。以前のリリースでは、常に UUID から構築された数に乱数を加えた数が使用されていました。

 
使用方法

cfapplication タグは、通常 "Application.cfm" ファイル内で、ColdFusion アプリケーションのデフォルト値を設定するために使用されます。

メモ: "Application.cfc" ファイルでアプリケーションのデフォルト値を設定することもできます。詳細については、1193ページの「アプリケーション変数」 を参照してください。

cfapplication タグが ColdFusion Administrator 内で無効になっていないかぎり、このタグを使用してアプリケーション変数を有効にすることができます。また、Administrator 設定は sessionManagement 属性よりも優先されます。詳細については、『ColdFusion MX の設定と管理』 を参照してください。

クラスタ上で ColdFusion を稼働している場合は、clientStorage = "cookie" またはデータソース名を指定する必要があります ("registry" は指定できません)。

アプリケーション名が 64 文字を超えるときは、エラーが生成されます。

CFTOKEN 変数の長さは 8 バイトで、範囲は 10000000 ~ 99999999 です。

メモ: ClientStorage=cookie を指定すると、cfflush タグに続いて設定された Client スコープ変数はクライアントブラウザに保管されません。
 
クロスサイトスクリプティング攻撃からの変数の保護

ScriptProtect 属性を使用すると、1 つ以上の変数スコープをクロスサイトスクリプティング攻撃から保護できます。この攻撃では、クライアントがユーザーのアプリケーションを利用して悪意のあるコードをユーザーのブラウザに送信しようとします。この攻撃では、フォームフィールドや URL 変数のユーザー入力により、ユーザー出力用の CF 変数が設定されます。JavaScript、アプレット、オブジェクト参照などの悪意のあるコードを含むデータが送信され、ユーザーのシステム上で実行されます。

メモ: ColdFusion MX Administrator の [設定] ページの [Enable Global Script Protection] オプションで、デフォルトのスクリプト保護設定が決まります。scriptProtect 属性を使用すると、Administrator での設定を上書きすることができます。Application.cfc 初期化コードを使用して保護に関する値を設定することもできます。

ColdFusion MX のクロスサイトスクリプティング保護処理は、ColdFusion MX がリクエストの最初にアプリケーション設定を処理するときに実行されます。したがって、ユーザーのリクエスト内の URL、Cookie、CGI、およびフォーム変数を処理することができます。デフォルトでは、object、embed、script、applet、および meta の各タグ名をテキスト InvalidTag に置き換えます。これらの名前をプレーンテキストで示すことが可能になり、タグ名として使われた場合はその名前を置換します。

ColdFusion のスコープの一部または全部を保護対象に指定することができます。ただし、未知のソースからの変数を持つことがあるのはフォーム、URL、CGI、および Cookie のスコープだけです。スコープを保護するには、追加の処理も必要になります。このため、all 属性の値はこれら 4 つのスコープだけに保護を適用します。

スクリプト保護のメカニズムは、サーバー設定の cf_root/lib/neo-security.xml ファイル、または変数値に対する J2EE 設定の cf_root/WEB-INF/cfusion/lib/neo-security.xml ファイルで定義される正規表現に適用されます。CrossSiteScriptPatterns 変数の正規表現を修正することにより、ColdFusion の置換パターンをカスタマイズすることができます。

 
サーバー変数、アプリケーション変数、およびセッション変数のロック

Server、Application、および Session スコープの変数を設定または更新する場合は、scope 属性を次の値に設定した状態で cflock タグを使用します。

  • サーバー変数の場合は、"server" を指定します。
  • アプリケーション変数の場合は、"application" を指定します。
  • セッション変数の場合は、"session" を指定します。

これらのスコープの変数を読み取るコードをロックする必要がある場合もあります。スコープのロック方法については、267ページのcflockを参照してください。

 
<!--- この例は、cflock を使用して Application、Server、および Session スコープ内の変数に対するデー
タ更新の際に競合状態を回避する方法を示しています。 --->
<h3>cfapplication の例</h3>
<p>cfapplication は ColdFusion アプリケーションのスコープを定義し、アプリケーションやセッション変数の
保管を有効または無効にします。このタグは、"Application.cfm" という特殊なファイル内に挿入されます。
"Application.cfm" ファイルは、同じディレクトリ内またはサブディレクトリ内の他のどの CF ページよりも
先に自動的に実行されます。</p>

<cfapplication name = "ETurtle"
sessionTimeout = #CreateTimeSpan(0, 0, 0, 60)#
sessionManagement = "Yes">

<!--- E-Turtleneck で使用されるセッション変数とアプリケーション変数を初期化。 ---> 
<cfparam name="application.number" default="1">
<cfparam name="session.color" default= "">
<cfparam name="session.size" default="">

<cfif IsDefined("session.numPurchased") AND IsNumeric(trim(session.cartTotal))>
<!--- アプリケーション変数に対して Application スコープを使用して、競合状態を回避。これは、タートルネッ
クの販売総数を記録する変数です。 --->
   <cflock scope = "Application" timeout = "30" type = "Exclusive">
   <cfset application.number = application.number + session.numPurchased>
   </cflock>
</cfif>

<cfoutput>
E-Turtleneck は、これまでに #application.number# 枚のタートルネックを販売しました。
</cfoutput>
<!--- Application.cfm の終了 ---> 
NAME  
  「説明」を参照
 

アプリケーション名です。長さは 64 文字までです。

アプリケーション変数およびセッション変数 : 必須

クライアント変数 : オプション

LOGINSTORAGE  
  オプション
 
Default value: "cookie"
  • cookie: ログイン情報を Cookie スコープに保管します。
  • session: ログイン情報を Session スコープに保管します。
CLIENTMANAGEMENT  
  オプション
 
Default value: "no"
  • yes: クライアント変数を有効にします。
  • no
CLIENTSTORAGE  
  オプション
 
Default value: "registry"

クライアント変数の保管方法を示します。

  • datasource_name: ODBC またはネイティブのデータソースに保管します。Administrator でストレージレポジトリを作成する必要があります。
  • registry: システムレジストリに保管します。
  • cookie: クライアントコンピュータ上の Cookie 内に保管します。拡張可能です。クライアントがブラウザで Cookie を無効にしている場合、クライアント変数は機能しません。
SETCLIENTCOOKIES  
  オプション
 
Default value: "yes"
  • yes: クライアント Cookie を有効にします。
  • No: CFID Cookie および CFTOKEN Cookie は、クライアントのブラウザに自動的には送信されません。セッション変数またはクライアント変数が使用されるすべてのページの URL 上で CFID および CFTOKEN を手作業でコーディングする必要があります。
SESSIONMANAGEMENT  
  オプション
 
Default value: "no"
  • yes: セッション変数を有効にします。
  • no
SESSIONTIMEOUT  
  オプション
 
Default value: "ColdFusion Administrator の [変数] ページ内に指定された値"

セッション変数の有効期限です。CreateTimeSpan 関数と日付、時刻、分、および秒の値をカンマで区切って指定します。

APPLICATIONTIMEOUT  
  オプション
 
Default value: "ColdFusion Administrator の [変数] ページ内に指定された値"

アプリケーション変数の有効期限です。CreateTimeSpan 関数と日付、時刻、分、および秒の値をカンマで区切って指定します。

SETDOMAINCOOKIES  
  オプション
 
Default value: "no"
  • yes: クライアント変数保管のために Cookie を使用するときに、CFID Cookie と CFTOKEN Cookie およびすべてのクライアント変数に対してドメイン Cookie を使用します。クラスタで実行されるアプリケーションの場合は必須です。
  • no: CFID Cookie、CFTOKEN Cookie、およびすべてのクライアント変数 Cookie に対してホスト固有の Cookie を使用します。
SCRIPTPROTECT  
  オプション
 
Default value: "ColdFusion MX Administrator の [Enable Global Script Protection] ページに指定された値"

変数をクロスサイトスクリプティング攻撃から保護するかどうかを指定します。

  • none: 変数を保護しません。
  • all: フォーム、URL、CGI、および Cookie の変数を保護します。
  • ColdFusion スコープのカンマ区切りリスト: 指定したスコープ内の変数を保護します。

詳細については、「使用方法」を参照してください。