1

我的任务是研究将 .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。这给了我一个“找不到文件”错误。

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

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

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

那么,我所追求的可能吗?(Windows Server 2008 和 IIS 以防万一。ColdFusion 9。)


我知道我可以在我的 index.cfm 中放置一个 CFINCLUDE 并传递类似的 URL http://www.example.com/?file=test.cfm,但我不想这样做。


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

4

2 回答 2

3

与其让你的车轮沿着这条路走下去,让我为你指出一个可能更好的方向,这可能会解决最初的问题,但从更首选/最佳实践的角度来看:

ColdFusion 无源部署

与其尝试对站点进行 jimmy-rig 以读取 root 之外的文件,不如将源代码公开。

于 2011-11-10T16:48:28.930 回答
2

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

于 2011-11-10T16:52:22.567 回答