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

В приложении, которое я разработал, я назвал одну из своих веб-страниц "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

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

С наилучшими пожеланиями, Опорно-GG Служба поддержки DailyRazor.


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

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

CF Метки:

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

Функции CF:

  • SetProfileString
  • CreateObject (COM)
  • CreateObject (CORBA)
  • CreateObject (JAVA)

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

Ответы [ 4 ]

5 голосов
/ 09 января 2011
3 голосов
/ 09 января 2011

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

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

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

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

0 голосов
/ 29 октября 2013

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

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

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

0 голосов
/ 09 января 2011

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

Он все еще доступен для загрузки: http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1002037

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...