这是上下文:
我在一家非常大的企业工作。在这里,我们有许多 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 响应的 header 已经提交时,WebSphere 无法重置其缓冲区以发送自定义错误页面,然后只能发送基本错误页面。
这是我的问题:
(1) 是否可以配置 WebSphere,使其永远不会在其基本错误页面中包含任何堆栈跟踪?这样,即使由于某些技术原因,WebSphere 无法发送我们的自定义错误页面,至少基本错误页面不会包含任何敏感数据。
我们如何做到这一点?
谢谢,
最佳答案
您是否有权访问 WAS 的配置设置?如果是这样,您应该能够在 httpd.conf 的 ErrorDocument 指令中设置一个新的默认基本错误页面。
关于java - 生产环境 - http 500 错误页面 - 请没有堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251252/
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file