Java 生产环境-http 500错误页-请不要stacktrace

Java 生产环境-http 500错误页-请不要stacktrace,java,websphere,stack-trace,production-environment,custom-error-pages,Java,Websphere,Stack Trace,Production Environment,Custom Error Pages,以下是上下文: 我在一家很大的企业工作。这里,我们有许多websphereapplicationserver集群,每个集群运行许多javaeeweb应用程序。这些应用程序中的大多数(但不是全部)在其web.xml中包含特殊指令,用于在发生意外异常时显示自定义错误页面。下面是一个例子: <error-page> <error-code>500</error-code> <location>/500.jsp</location&g

以下是上下文:

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

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

500
/500.jsp
当然,通过这样做,我们的目标是向客户展示一个友好的错误页面,但此外,我们主要的目标是隐藏StackTrace,这通常包含在标准http 500错误页面中

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

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

因此,在这里没有什么大的意外,每个大型企业都需要向其客户隐藏这些堆栈跟踪

但是,我们的问题是:

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

这是我的问题:

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

我们怎样才能做到这一点


谢谢,

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

,正如closingBrace所说,您应该通过配置Websphere application server来防止打印stacktrace

试试这个:
com.ibm.ws.webcontainer.SuppressHtmlRecursiveErrorRoutPut是web容器自定义属性,用于在不更改消息内部日志记录的情况下,抑制错误文本的HTML输出

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


自定义参数应放置在:应用程序服务器>服务器名称>Web容器>自定义属性>

无法回答有关禁用堆栈跟踪的特定问题,但是,您是否在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)。据我所知,“httpd.conf”与Apache/IHS(IBM HTTP服务器)相关……我们在WebSphere服务器前面使用Microsoft Information Server作为Web服务器。您知道即使WebSphere在Internet Information Server后面,是否也涉及此文件(httpd.conf)?