生产环境 - http 500错误页面 - 请不要堆栈跟踪

clo*_*ace 9 java websphere stack-trace production-environment custom-error-pages

这是上下文:

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

<error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)

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

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

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

因此,这里没有什么大惊喜,每个大型企业都需要将这些堆栈跟踪隐藏到客户手中.

但是,这是我们的问题:

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

这是我的问题:

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

我们应该怎么做?

谢谢,

geb*_*buh 1

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