Могу ли я использовать любые другие теги CF для замены CFDUMP?

В разработанном мною приложении я назвал одну из своих веб-страниц "error.cfm". Я хочу, чтобы он отображался всякий раз, когда в приложении возникает ошибка. Поэтому я поместил следующий код внутри "error.cfm":

        An uncaught exception just 'happened' :-(
        <br><br>
        <b><cfoutput>#exception.message#</cfoutput></b><br />
        <cfoutput>#exception.detail#</cfoutput><br /><br />
        <cfif isdefined('exception.cause')>
            <b><cfoutput>#exception.cause.message#</cfoutput></b><br />
            <cfoutput>#exception.cause.detail#</cfoutput>
        </cfif>
        <cfdump var="#exception#">

Поэтому после размещения веб-сайта я обнаружил, что эта конкретная страница отказалась загружаться, и вместо этого было отображено "500 Internal Error". Затем я пожаловался в свою хостинговую компанию, и мне прислали следующие данные:


Уважаемый клиент,

Фактическое сообщение об ошибке следующее:

Безопасность: Запрошенному шаблону было отказано в доступе к createobject(java).
Ниже приводится внутреннее сообщение об исключении: доступ запрещен (coldfusion.runtime.FunctionPermission createobject(java))

Ошибка произошла в C:\inetpub\vhosts\plat4ad.com\httpdocs\cms\error.cfm: строка 10

8: 9: 10:

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

https://support.dailyrazor.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=293&nav=0,29,76

Пожалуйста, дайте нам знать, если у вас есть другие вопросы.

С наилучшими пожеланиями, Support-GG DailyRazor Support Team.


Теперь проверяем списки тегов, которые они отключили на своих серверах, CFDUMP был среди них:

На общих серверах ColdFusion у вас будет доступ ко всем тегам и функциям, кроме следующих:

CF Метки:

  • CFCOLLECTION
  • CFCONTENT
  • CFDUMP
  • CFEXECUTE
  • CFLOG
  • CFOBJECT
  • CFOBJECTCACHE
  • CFREGISTRY

Функции CF:

  • SetProfileString
  • CreateObject (СОМ)
  • CreateObject (CORBA)
  • CreateObject (JAVA)

Пожалуйста, есть ли альтернатива для CFDUMP? Или кто-нибудь знает какую-либо хостинговую компанию ColdFusion, у которой нет этих ограничений? Я ценю любые идеи от вас.

4 ответа

Если вы получите себе VPS (google:coldfusion VPS), вы сможете делать на этой машине все, что захотите.

Весь смысл отсутствия cdump это мера безопасности. Обычно вся отладка и вывод необработанных данных выполняется на сервере разработки, а на размещенном сервере вы запускаете приложения, верно? Error.cfm используется для сокрытия сведений об обнаруженных исключениях, таких как путь к файлам, данные об используемых библиотеках и т. д.

Есть способы отображения данных без cfdump, В вашем случае я не понимаю, почему вы не могли использовать обычную cfoutput и запишите детали исключения как 2 строки вывода.

На вашем месте я бы взял исходные коды fw/1 или Mura CMS, чтобы увидеть, как они обрабатывают сообщения об ошибках, лучше посмотреть, как это делают опытные люди, а затем "тратить" время на повторное изобретение колеса.

Я добавлю, что если вы решите "сбросить" детали, вы также можете обернуть код дампа в блок "если", который просматривает ваш cgi.REMOTE_ADDR и, если он соответствует вашему IP-адресу, выполняет сброс, в противном случае - нет.

<cfif cgi.REMOTE_ADDR EQ "167.96.177.66">
<!--- execute dump code here --->
</cfif>

Предостережения: YMMV, должен иметь статический IP, должен быть на этом IP и т. Д.

CFDUMP начал свою жизнь как пользовательский тег еще до того, как он был включен в ColdFusion.

По-прежнему его можно загрузить: http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1002037

Возможно, вам придется внести изменения в него, чтобы он работал (лучше) в более современных версиях CF, но, вероятно, он должен делать более 90 процентов того, для чего он вам нужен.

Другие вопросы по тегам