Храните и используйте шаблоны ColdFusion за пределами корневого веб-сайта.

Мне было поручено изучить возможность хранения файлов .cfm за пределами корневого веб-сайта в качестве дополнительной меры безопасности. (Я говорю не о CFC, а о файлах, которые будут отображаться в строке URL.)

Я подумал, что могу использовать для этого свойства OnRequest() в Application.cfc, но не повезло.

Я пробовал это:

<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. Это дает мне ошибку «файл не найден».

Затем я создал сопоставление ColdFusion с C:\test под названием «test» и изменил свой CFINCLUDE следующим образом:

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

К сожалению, я получил ту же ошибку.

Итак, возможно ли то, что я ищу? (Windows Server 2008 и IIS, если это имеет значение. ColdFusion 9.)


Я знаю, что могу поместить CFINCLUDE в свой index.cfm и передавать URL-адреса типа http://www.example.com/?file=test.cfm, но я бы предпочел этого не делать.


Ну вот кое-что: если я помещу пустой test.cfm в свой веб-корень, это сработает. Очевидно, я бы не стал ставить пустые заглушки для каждого из моих файлов (которых для этого проекта будет сотни).


person ale    schedule 10.11.2011    source источник


Ответы (2)


Я думаю, вам больше повезет, используя onMissingTemplate, а не onRequest. http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d2a.html

person Sean Coyne    schedule 10.11.2011
comment
Это сделает то, что мне нужно. Спасибо. - person ale; 10.11.2011

Вместо того, чтобы крутить колеса по этому пути, позвольте мне указать вам возможное лучшее направление, которое может решить исходную проблему, но с точки зрения более предпочтительной/лучшей практики:

Развертывание ColdFusion без источника

Вместо того, чтобы пытаться заставить сайт читать файлы вне root, вы просто никогда не публикуете исходный код.

person Shawn Holmes    schedule 10.11.2011
comment
Интересный. Я должен буду проверить это. Спасибо. - person ale; 10.11.2011