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

#coldfusion #application.cfc

#coldfusion #application.cfc

Вопрос:

Мне было поручено изучить возможность хранения файлов .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 значение в свой веб-корень, тогда это сработает. Очевидно, я бы действительно предпочел не помещать пустые заглушки для каждого из моих файлов (которые для этого проекта в конечном итоге будут исчисляться сотнями).

Ответ №1:

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

Развертывание без использования исходного кода ColdFusion

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

Комментарии:

1. Интересно. Мне придется это протестировать. Спасибо.

Ответ №2:

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

Комментарии:

1. Это сделает то, что мне нужно. Спасибо.