【问题标题】:production environment - http 500 error page - no stacktrace please生产环境 - http 500 错误页面 - 请不要堆栈跟踪
【发布时间】:2012-06-30 08:43:13
【问题描述】:

这是上下文:

我为一家非常大的企业工作。在这里,我们有许多 WebSphere Application Server 集群,每个集群都运行许多 Java EE Web 应用程序。大多数(但不是全部)这些应用程序在其 web.xml 中包含特殊指令,以在发生意外异常时显示自定义错误页面。这是一个例子:

<error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
</error-page>

这样做当然是为了向我们的客户显示一个友好的错误页面,但此外,我们的主要目标是隐藏通常包含在标准 http 500 错误页面中的堆栈跟踪。

您应该知道,这些堆栈跟踪包含许多敏感数据,例如包名、类名甚至方法名。最糟糕的是,有时这些堆栈跟踪包含 SQL 异常,这些异常通常会显示使用了哪些数据库服务器软件。更糟糕的是,有时,这些堆栈跟踪包含文件和文件夹路径,进而可以揭示我们的 WebSphere Application Server 在哪个操作系统系列上运行。

我是否需要提及这些堆栈跟踪可以揭示的所有其他更敏感的数据? (用户名、端口号、IP 地址、计算机/服务器名称、JNDI 对象的名称……)

因此,这并不奇怪,每个大型企业都需要向他们的客户隐藏这些堆栈跟踪。

但是,这是我们的问题:

有时,即使在 web.xml 文件中很好地配置了自定义错误页面,WebSphere 也会将基本错误页面发送到客户的 Web 浏览器。我非常理解 WebSphere 为什么要这样做。例如,我知道当 http 响应的标头已经提交时,WebSphere 无法重置其缓冲区以发送自定义错误页面,然后只能发送基本错误页面。

这是我的问题:

(1) 是否可以配置 WebSphere,使其永远不会在其基本错误页面中包含任何堆栈跟踪?这样,即使由于某种技术原因,WebSphere 无法发送我们的自定义错误页面,至少基本错误页面不会包含任何敏感数据。

我们怎样才能做到这一点?

谢谢,

【问题讨论】:

  • 无法回答您关于禁用堆栈跟踪的具体问题,但是您是否在 WebSphere 前面有一个 Web 服务器或代理,您可以在那里设置错误页面?
  • 当您得到默认错误页面时,您正在使用 WAS 前面的 Web 服务器并通过 http 插件?
  • 我们在 WebSphere 服务器前使用 Microsoft Internet Information Server,并使用 WebSphere 插件(ISAPI 过滤器)将 HTTP 请求转发到我们的 WebSphere 服务器。此外,我们使用 WebSphere 管理控制台来生成我们的“plugin-cfg.xml”文件。我们不能编辑这些文件(因为如果我们编辑它们来调整它们,我们会不断地重新编辑它们以保持我们的调整)。因此,如果需要对这些文件进行一些修改,WebSphere 管理控制台应在生成“plugin-cfg.xml”文件时包含这些修改。
  • 所以我们必须使用 WebSphere 管理控制台来配置它,除非我们找到一种方法来配置 Internet Information Server 以检索自定义错误页面(即使错误来自 WebSphere,而不是来自 IIS)。

标签: java websphere stack-trace production-environment custom-error-pages


【解决方案1】:

您有权访问 WAS 的配置设置吗?如果是这样,您应该能够在 httpd.conf 的 ErrorDocument 指令中设置一个新的默认基本错误页面。

【讨论】:

  • 据我所知,"httpd.conf" 与 Apache / IHS (IBM HTTP Server) 相关...我们在 WebSphere 服务器前使用 Microsoft Information Server 作为 Web Server。即使 WebSphere 在 Internet Information Server 之后,您是否知道是否涉及此文件(httpd.conf)?
【解决方案2】:

正如 ClosingBrace 所说,您应该通过配置 Websphere 应用程序服务器来防止打印堆栈跟踪。

试试这个:
com.ibm.ws.webcontainer.suppressHtmlRecursiveErrorOutput 是 Web 容器定制属性,用于抑制错误文本的 HTML 输出,而不更改消息的内部日志记录。

您可以将此自定义属性设置为 true 以禁用向用户输出错误消息的 HTML 并向用户显示带有 500 错误代码的空白页面。

自定义参数应该放在:Application servers>server_name>Web Container>Custom properties>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2017-10-14
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多