説明

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

カテゴリ

Application framework tags

シンタックス

<cfapplication 
datasource="data_source_name" 
name = "application name" 
applicationTimeout = #CreateTimeSpan(days, hours, minutes, seconds)# 
clientManagement = "yes|no" 
clientStorage = "data_source_name|Registry|Cookie" 
loginStorage = "cookie|session"
passarraybyreference = "true | false"
searchimplicitscopes = "true | false" 
googleMapKey = "map key" 
scriptProtect = "none|all|list" 
serverSideFormValidation = "yes|no" 
sessionManagement = "yes|no" 
sessionTimeout = #CreateTimeSpan(days, hours, minutes, seconds)# 
setClientCookies = "yes|no" 
setDomainCookies = "yes|no"
compileextforinclude = "comma_separated_list"
strictnumbervalidation = "true|false">

注意:このタグの属性は attributeCollection で指定でき、その値は構造体になります。attributeCollection で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

関連項目

cfassociatecferrorcflockcfmessageboxApplication.CFC Reference、『ColdFusion アプリケーションの開発』の ColdFusion アプリケーションの設計と最適化および CFML アプリケーションへの JEE および Java 要素の統合

履歴

ColdFusion 11: compileextforinclude および strictnumbervalidation 属性が追加されました。

ColdFusion 9:datasource、googleMapKey および serverSideFormValidation 属性が追加されました。ColdFusion 8:secureJSON および SecureJSONPrefix 属性が追加されました。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 から構築された数に乱数を加えた数が使用されていました。

属性

属性

必須/オプション

デフォルト

説明

authCookie

オプション

 

ColdFusion の認証 Cookie 関連のプロパティが含まれる構造体です。

datasource

オプション

 

クエリーによってデータを取得するデータソースの名前です。

name

「説明」を参照

 

アプリケーション名です。長さは 64 文字までです。
アプリケーション変数およびセッション変数:必須。クライアント変数:オプション

applicationTimeout

オプション

ColdFusion Administrator の [変数] ページ内に指定された値

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

clientManagement

オプション

no

  • yes:クライアント変数を有効にします。
  • no

clientStorage

オプション

registry

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

  • datasource_name:ODBC またはネイティブのデータソースに保管します。Administrator でストレージレポジトリを作成する必要があります。
  • registry:システムレジストリに保管します。
  • cookie:クライアントコンピュータ上の Cookie 内に保管します。拡張可能です。クライアントがブラウザで Cookie を無効にしている場合、クライアント変数は機能しません。

exchangeServerVersion

オプション

2007

Microsoft Exchange Server のバージョンを指定します。有効な値は次のとおりです。

  • 2003
  • 2007
  • 2010
    詳細を指定しない場合は、デフォルトで 2007 が使用されます。

googleMapKey

オプション

 

Web ページに Google マップを埋め込むために必要な Google Map API キーです。

loginStorage

オプション

cookie

  • cookie:ログイン情報を Cookie スコープに保管します。
  • session:ログイン情報を Session スコープに保管します。

passArrayByReference

オプション

False

配列を参照で渡す場合は True。

searchImplicitScopes

オプション

True

暗黙的なスコープをデフォルトで検索しない場合は False。

scriptProtect

オプション

ColdFusion Administrator の [グローバルなスクリプト保護] の設定に基づいて決定されます。

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

  • none:変数を保護しません。
  • all:フォーム、URL、CGI、および Cookie の変数を保護します。
  • ColdFusion スコープのカンマ区切りリスト:指定したスコープ内の変数を保護します。
    詳細については、「使用方法」を参照してください。

secureJSON

オプション

Administrator の値

 

serverSideFormValidation

オプション

yes

no の場合、フォームの送信時に cfform フィールドでの検証を無効にします。

secureJSONPrefix

オプション

Administrator の値

secureJSON の設定が true の場合に、リモート呼び出しへの応答として ColdFusion 関数が JSON 形式で返す値の前に挿入するセキュリティの接頭辞です。デフォルト値は、Administrator のサーバーの設定/設定ページの「シリアル化 JSON への接頭辞付加」設定の値(デフォルトは JavaScript のコメント文字である //)です。
詳しくは、『ColdFusion アプリケーションの開発』のセキュリティの強化を参照してください。

sessionCookie

オプション

 

ColdFusion のセッション Cookie 関連のプロパティが含まれる構造体です。

sessionManagement

オプション

no

  • yes:セッション変数を有効にします。
  • no

sessionTimeout

オプション

ColdFusion Administrator の [変数] ページ内に指定された値

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

setClientCookies

オプション

yes

  • yes:クライアント Cookie を有効にします。
  • no:CFID Cookie および CFTOKEN Cookie は、クライアントのブラウザーに自動的には送信されません。セッション変数またはクライアント変数が使用されるすべてのページの URL 上で CFID および CFTOKEN を手作業でコーディングする必要があります。

setDomainCookies

オプション

no

  • yes:クライアント変数保管のために Cookie を使用するときに、CFID Cookie と CFTOKEN Cookie およびすべてのクライアント変数に対してドメイン Cookie を使用します。クラスターで実行されるアプリケーションの場合は必須です。
  • no:CFID Cookie、CFTOKEN Cookie、およびすべてのクライアント変数 Cookie に対してホスト固有の Cookie を使用します。
compileextforinclude オプション  

<cfinclude> タグの(カンマ区切りのリストとして)許可されるファイル拡張子のリストを指定します。リスト内にワイルドカード('*')を指定すると、<cfinclude> タグを使用してインクルードされたすべてのファイルがコンパイル対象になります。<cfinclude> タグを使用してインクルードされたファイルがこのリストにない場合、その内容はスタティックにインクルードされます。デフォルトでは、拡張子 cfm および cfml を持つファイルは、常に、この設定に関係なくコンパイルされます。cfinclude を参照してください。

strictnumbervalidation オプション true

ColdFusion 10 およびそれ以前のバージョンでは、IsValid 関数は、最初の通貨記号と数字内のカンマを許可していました。

ColdFusion 11 からは、この関数は、より厳格に評価します。この値を false に設定すると、isValid 関数は以前の方法で動作します。この設定は、整数および数値の検証が使用されている場所にかかわらず、cfargumentcfparam および cfform タグに影響します。この設定に基づいて、検証がこれらのタグにも反映されます。

使用方法

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

注意:Application.cfc ファイルでアプリケーションのデフォルト値を設定することもできます。詳細については、Application variablesを参照してください。

このタグが ColdFusion Administrator 内で無効になっていないかぎり、このタグを使用してアプリケーション変数を有効にすることができます。また、Administrator 設定は sessionManagement 属性よりも優先されます。詳しくは、『ColdFusion 設定と管理』を参照してください。ColdFusion がクラスター上で実行されている場合、clientStorage = "cookie" またはデータソース名を指定します。"registry" は指定できません。アプリケーション名が 64 文字を超えると、エラーが発生します。CFTOKEN 変数の長さは 8 バイトで、範囲は、10000000 ~ 99999999 です。

注意:ClientStorage=cookie を指定すると、cfflush タグに続いて設定された Client スコープ変数は、クライアントブラウザーに保存されません。

クロスサイトスクリプティング攻撃からの変数の保護

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

注意:デフォルトのスクリプト保護設定は、ColdFusion Administrator の設定ページにある「グローバルなスクリプト保護」オプションによって決定されます。scriptProtect 属性を使用すると、Administrator での設定よりも優先されます。Application.cfc 初期化コードを使用して保護に関する値を設定することもできます。

ColdFusion のクロスサイトスクリプティング保護処理は、ColdFusion がリクエストの最初にアプリケーション設定を処理するときに実行されます。したがって、ユーザーのリクエスト内の URL、Cookie、CGI、およびフォーム変数を処理することができます。デフォルトでは、object、embed、script、applet および meta の各 HTML タグ名をテキスト InvalidTag に置き換えます。これらの名前をプレーンテキストで示すことが可能になり、タグ名として使われた場合はその名前を置換します。ColdFusion のスコープの一部または全部を保護対象に指定することができます。ただし、未知のソースからの変数を持つことがあるのはフォーム、URL、CGI、および Cookie のスコープだけです。スコープを保護するには、追加の処理も必要になります。このため、all 属性の値はこれら 4 つのスコープだけに保護を適用します。
スクリプト保護のメカニズムでは、サーバー設定の cf_root/lib/neo-security.xml ファイルまたは JEE 設定の cf_root/WEB-INF/cfusion/lib/neo-security.xml ファイルで定義される正規表現を変数値に適用します。CrossSiteScriptPatterns 変数の正規表現を修正することで、ColdFusion の置換パターンをカスタマイズできます。

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

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

  • サーバー変数の場合は、server を指定します。
  • アプリケーション変数の場合は、application を指定します。
  • セッション変数の場合は、session を指定します。
    場合によっては、これらのスコープで変数を読み取るコードをロックする必要もあります。スコープのロック方法については、cflock を参照してください。

<!--- This example shows how to use cflock to prevent race conditions during data updates to variables in Application, Server, and Session scopes. ---> 
<h3>cfapplication Example</h3> 
<p>cfapplication defines scoping for a ColdFusion application and enables or disables application and/or session variable storage. This tag is placed in a special file called Application.cfm that automatically runs before any other CF page in a directory (or subdirectory) where the Application.cfm file appears.</p> 

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

<!--- Initialize session and application variables used by 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))> 
<!--- Use the application scope for the application variable to prevent race condition. This variable keeps track of total number of turtlenecks sold. ---> 
<cflock scope = "Application" timeout = "30" type = "Exclusive"> 
<cfset application.number = application.number + session.numPurchased> 
</cflock> 
</cfif> 

<cfoutput> 
E-Turtleneck is proud to say that we have sold #application.number# turtlenecks to date. 
</cfoutput> 
<!--- End of Application.cfm --->

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー