在Web根目录之外存储和使用ColdFusion模板

时间:2011-11-10 16:35:05

标签: coldfusion application.cfc

我的任务是研究将.cfm文件存储在Web根目录之外的可能性作为进一步的安全措施。 (我不是在讨论CFC,而是会出现在URL字符串中的文件。)

我认为我可以在Application.cfc中使用OnRequest()的属性来做到这一点,但没有运气。

我试过这个:

<cffunction name="OnRequest" access="public" returntype="void" output="true">
  <cfargument name="TargetPage" type="string" required="true"/>

  <cfinclude template="C:/test#arguments.TargetPage#"/>

  <cfreturn/>
</cffunction>

然后我将test.cfm置于C:\test内并尝试http://localhost/test.cfm。这给了我一个“找不到文件”的错误。

然后我创建了一个名为“test”的C:\test ColdFusion映射,并因此更改了我的CFINCLUDE:

  <cfinclude template="/test#arguments.TargetPage#"/>

不幸的是我遇到了同样的错误。

那么,我可能会追求什么呢? (Windows Server 2008和IIS以防万一.ColdFusion 9。)


我知道我可以在我的index.cfm中加入CFINCLUDE并传递http://www.example.com/?file=test.cfm之类的网址,但我不想这样做。


这里有一些东西:如果我在我的网络根目录中放置一个空的test.cfm,那么这是有效的。显然,我真的不想为我的每个文件放置空的存根(对于这个项目,最终会有数百个)。

2 个答案:

答案 0 :(得分:3)

不要让你的车轮沿着这条路走下去,让我指出一个可能解决原始问题的可能更好的方向,但是从更优选/最佳实践的角度来看:

ColdFusion Sourceless Deployment

而不是试图让网站在根目录之外读取文件,而不是将源代码放到世界上。

答案 1 :(得分:2)

我认为使用onMissingTemplate而不是onRequest会更好。 http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d2a.html