定义ColdFusion应用程序的作用范围;设定客户端变量是否起作用;并指定客户端变量的存储方式;设定session变量起作用; 并设定Application变量超时的时间.
<cfapplication
name = "application name"
applicationTimeout = #CreateTimeSpan(days, hours, minutes, seconds)#
clientManagement = "yes|no"
clientStorage = "data source name|Registry|Cookie"
loginStorage = "cookie|session"
scriptProtect = "none|all|list"
sessionManagement = "yes|no"
sessionTimeout = #CreateTimeSpan(days, hours, minutes, seconds)#
setClientCookies = "yes|no"
setDomainCookies = "yes|no">
ColdFusion 8: 新增 secureJSON 和 SecureJSONPrefix 属性
ColdFusion MX 7: 新增 scriptProtect 属性
ColdFusion MX 6.1: 新增 loginStorage 属性
|
属性 |
必须/可选 |
默认 |
描述 |
|---|---|---|---|
|
name |
请看描述 |
|
应用程序的名称.最多64个字符. 对Application 和 Session 变量而言: 该属性必须. 对客户端变量而言: 可选 |
|
applicationTimeout |
可选 |
在ColdFusion Administrator变量页面指定 |
application变量的作用时间. 用CreateTimeSpan 函数来设定,并分別输入日,时,分,秒等值, 指定Session变量的生命周期. |
|
clientManagement |
可选 |
no |
|
|
clientStorage |
可选 |
registry |
客户端变量如何存储:
|
|
loginStorage |
可选 |
cookie |
|
|
scriptProtect |
可选 |
由ColdFusion Administrator决定Global Script的设置是否受保护 |
制定变量是否在被跨站攻击时受保护
另外更多的信息,主要视实际用途而定. |
|
secureJSON |
可选 |
Administrator value |
一个布尔值,来决定在一个ColdFusion函数返回JSON格式的远程调用时响应的值是否都加上一个安全前缀. 默认JSON前缀设定在 Administrator Server Settings > Settings page (默认是 false). 你也可以在cffunction标签中修改这个设定. |
|
secureJSONPrefix |
可选 |
Administrator value |
如果 secureJSON 设置为 true,设定用于一个ColdFusion函数返回JSON格式的远程调用时响应的值加上一个安全前缀的值. 该默认值设定在Administrator Server Settings > Settings page (which defaults to //, JavaScript 评论文字).
|
|
sessionManagement |
可选 |
no |
|
|
sessionTimeout |
可选 |
在ColdFusion Administrator的变量设定页面指定 |
时间寿命变量. 使用CreateTimeSpan 函数设定,参数为天,时,分,秒, 用逗号隔开. |
|
setClientCookies |
可选 |
yes |
|
|
setDomainCookies |
可选 |
no |
|
这个标签常被使用在 Application.cfm文件中, 为ColdFusion应用程序做一些默认设置.
这个tag也可以设定application变量,除非在ColdFusion Administrator中被关闭.管理员设置时也常常用sessionManagement这个属性.更多信息,请参看Configuring and Administering ColdFusion.
如果ColdFusion是运行在cluster上, 你需要制定 clientStorage = "cookie" 或是一个 data source 名称; 你不能指定为 "registry".
如果application的名称大于64字符,ColdFusion将提示错误.
CFTOKEN 变量长度为8个字节数. 他的范围是 10000000 --99999999.
如果客户试图让你的申请发送恶意代码返回到用户的浏览器,该scriptprotect属性可以让你保护一个或多个变量作用域从跨站点脚本攻击. 在这些攻击中, 使用者输入(例如,从表单元素或表单,URL变量)注定作为CF 变量为使用者所输出. 这些提交包含恶意代码, 类似JavaScript 或 一个附属小程序或是某个对象参考,在使用者的电脑系统上被执行.
ColdFusion 跨站脚本保护操作是在ColdFusion一开始响应请求并执行程序时就完成的. 因此,它可以在用户的请求下执行 URL, 和 Cookie, CGI, 与 Form 等变量.默认情况下,它会视下列几个HTML标签的名字为无效tag: object, embed, script, applet, 和 meta. 但允许这些名称做为纯文本,并且在他们被作为标签名称使用时替换.
你可以指定一些或全部的coldfusion变量被保护, 但一般只有Form, URL, CGI, 和 Cookie scopes 有变量往往来源不明.此外,保护是需要额外处理执行的.因为这些因素,所有需要受保护的属性值大概就在这四个范围内.
脚本保护机制适用于作为一个正则表达式,在服务端配置时被定义在cf_root/lib/neo-security.xml 文件中, 或是作为变量值在J2EE配置中定义在 cf_root/WEB-INF/cfusion/lib/neo-security.xml文件中.你可以自己在CrossSiteScriptPatterns中的定义Coldfusion的模式来替换被修改的正则表达式.
当你要在服务器上设定或更新变量,应用程序,设定session 范围,可以使用 cflock标签 scope 属性来设定以下值:
在一些范例中, 你需要在这些范围内锁定代码成只读.需要了解锁定范围的操作和讲解, 请看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 --->