【问题标题】:Can I use any other CF tags to replace CFDUMP?我可以使用任何其他 CF 标签来替换 CFDUMP 吗?
【发布时间】:2011-01-08 22:54:38
【问题描述】:

在我设计的应用程序中,我将其中一个网页命名为“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 内部错误”。然后我向我的托管公司投诉,我收到了这些详细信息:


尊敬的客户,

实际的错误信息如下:

安全性:请求的模板已被拒绝访问 createobject(java)。
以下是内部异常信息:access denied (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
  • CF内容
  • CFDUMP
  • CFEXECUTE
  • CFLOG
  • CFOBJECT
  • CFOBJECTCACHE
  • CFREGISTRY

CF 函数:

  • SetProfileString
  • 创建对象(COM)
  • 创建对象(CORBA)
  • 创建对象(JAVA)

请问CFDUMP 有什么替代方案吗?或者有谁知道没有这些限制的任何 ColdFusion 托管公司?我很感激你的任何想法。

【问题讨论】:

    标签: coldfusion hosting cfdump


    【解决方案1】:
    【解决方案2】:

    如果您拥有自己的 VPS (google:coldfusion VPS),您就可以在该机器上做任何您想做的事情。

    没有cdump 的全部意义在于安全措施。通常所有调试和转储原始数据都是在开发服务器和运行应用程序的托管服务器上完成的,对吧? Error.cfm 用于隐藏捕获的异常详细信息,例如文件路径、有关使用的库的数据等。

    没有cfdump 也可以显示数据。在您的情况下,我不明白您为什么不能使用普通的 cfoutput 并将异常详细信息写为 2 行输出。

    在你的位置,我会使用 fw/1 或 Mura CMS 的源代码来看看它们如何处理错误消息,最好看看更有经验的人是如何做到这一点的,而不是“浪费”时间重新发明轮子。

    【讨论】:

    • 谢谢。但是我怎样才能在不放 cfdump 的情况下重写它呢?请帮帮我。这是 error.cfm 页面包含的内容:一个未捕获的异常刚刚“发生”:-(

      #exception.message#
      #exception.detail#

      #exception.cause.message#
      #exception.cause.detail#
    • 如果您以前没有看过 Camden 先生的这篇文章,我认为这篇文章将为您提供有关错误处理的更多详细信息:goo.gl/WPyiH。我仍然不明白为什么您希望实时应用程序向任何访问者显示这种“危险”输出?!但是好的,如果你想显示它,那么使用建议的替代 Ray。如果您意识到某些陌生人不必查看您的模板路径、组件和变量,您可以只选择那些对您很重要的异常结构行并输出它们。
    【解决方案3】:

    CFDUMP 在被包含在 ColdFusion 中之前就作为自定义标签开始使用。

    它似乎仍然可以下载:http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1002037

    您可能需要对其进行更改才能在更现代的 CF 版本中(更好地)工作,但它应该可以完成您所需的 90% 以上。

    【讨论】:

      【解决方案4】:

      我要补充一点,如果您选择“转储”详细信息,您还可以将转储代码包装在一个“if”块中,该块查看您的 cgi.REMOTE_ADDR,如果它与您的 IP 地址匹配,则转储,否则不不。

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

      注意事项:YMMV,必须有一个静态 IP,必须是那个 IP,等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 2012-04-24
        相关资源
        最近更新 更多