Tomcat服务在响应404/500等网络错误时,默认会将当前版本信息显示出来,这样就造成了中间件版本信息泄露这样的漏洞

方案一:修改版本号

1.进入Tomcat下的lib目录,备份catalina.jar文件后,解压该文件

 cd  tomcat/libcp catalina.jar catalina.jar.bakunzip catalina.jar

2.解压后,通过vi编辑器修改解压出来的ServerInfo.properties文件(在/org/apache/catalina/util/下)

vim org/apache/catalina/util/ServerInfo.properties

3.去除ServerInfo.properties文件的版本信息

server.info=ApacheTomcat
server.number=0.0.0.0
server.built=Nov 72016 20:05:27 UTC

4.将修改后的文件压缩回catalina.jar包中

jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties

5.重启Tomcat服务,访问不存在的页面进行404报错验证,看是否还显示中间件版本号

方案二:自定义错误页面替换默认页面

1.进入Tomcat的conf目录,修改web.xml,在标签前添加如下内容

<error-page><error-code>404</error-code><location>/error_404.html</location>
</error-page>
<error-page><error-code>400</error-code><location>/error_404.html</location>
</error-page>
<error-page><error-code>500</error-code><location>/error_404.html</location>
</error-page>
<error-page><error-code>501</error-code><location>/error_404.html</location>
</error-page>

2.进入Tomcat的webapps/ROOT目录,新增error_404.html页面,使用自定义页面已达到隐藏中间件版本信息的目的

3.针对400错误需要单独处理

3.1创建一个web项目,创建类并继承ErrorReportValve

package com.java.report;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.logging.Logger;import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ErrorReportValve;public class CustomErrorReportValve extends ErrorReportValve {// Create a simple loggerLogger log = Logger.getLogger(CustomErrorReportValve.class.getName());@Overrideprotected void report(Request request, Response response, Throwable t) {try {// Write a more friendly, less technical message to the userBufferedWriter out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()));out.write("<html><head><title>Oops</title><body>");out.write("<h1>Oops</h1>");out.write("<p>Well, that didn't go as we had expected.</p>");out.write("<p>Don't worry though, we're working on it.</p>");out.write("</body></html>");out.close();// Log the error with your favorite logging framework...log.severe("Uncaught throwable was thrown: " + t.getMessage());} catch (IOException e) {e.printStackTrace();}}
}

3.2 项目右键导出jar包tomcat-error-report.jar

3.3 把jar包放到lib下,

3.4 配置errorReportValveClass

修改server.xml,在host里配置

<Host errorReportValveClass="com.java.report.CustomErrorReportValve" />

3.5重启Tomcat服务

errer_404.html:https://download.csdn.net/download/javaL_X/85115283

tomcat-error-report.jar:https://download.csdn.net/download/javaL_X/85115444

Tomcat删掉错误页面的版本信息相关推荐

  1. IIS错误页面隐藏版本信息 - Web.Config customErrors配置

    目录 背景 分析暴露原因 解决办法 扩展学习customErrors使用方法 customErrors元素配置结构 元素属性 Mod 属性选项 示例 参考文章 背景 项目现按照国网的要求,测试后发现系 ...

  2. tomcat添加全局错误页面

    在我们项目安全测试中,会出现中间件信息泄露,以tomcat为例,如果我们没有配置统一的错误页面,访问不存在的地址时会出现如下图: 这会暴露我们的tomcat版本信息,在安全测试中,这是不允许的,属于严 ...

  3. tomcat全局配置错误页面详解(404页面)

    前言 花了两个小时,配置了下.在网上查了诸多攻略:没有一个是讲清楚的,我就随手写下,以备后期查用. 版本 tomcat 7.0.75 过程 大家可以看下,这是我按网上的步骤搞的,把错误页面放到了ROO ...

  4. http 请求(tomcat) 返回 错误页面信息

    http 请求,返回错误信息的html 页面: try{while (true) {while (reader.ready()) {String buf = null;while ((buf = re ...

  5. 检测到错误页面web应用服务器版本信息泄露

    比方说我现在访问:http://localhost:8080/pages/xx.jsp,应该会报404,没有该页面,但是会显示出所用服务器的信息: 所以为了避免产生此类漏洞个,应该对错误进行处理,在w ...

  6. 隐藏tomcat页面异常显示的版本信息

    1.正常情况下,tomcat遇到404或500会返回版本信息: 在这里插入图片描述 .在linux环境下 进入lib路径 unzip catalina.jar 编辑ServerInfo.propert ...

  7. 隐藏Tomcat版本信息

    前言:软件开发中生产环境有时候需要影响Tomcat的版本,本文主要介绍Tomcat和SpringBoot中设计. 原理:修改Tomcat中的ServerInfo.properties版本信息,使用ja ...

  8. HOW-TO:带有Spring MVC的Tomcat中的自定义错误页面

    默认的Tomcat错误页面看起来很可怕. 此外,它们可能会公开有价值的信息,包括服务器版本和异常堆栈跟踪. Servlet规范提供了一种通过web.xml配置异常行为的方法. 可以配置对特定Java异 ...

  9. 如何自定义Tomcat 404错误页面

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 点击这里使用RSS ...

最新文章

  1. Centos6.5升级系统自带gcc4.4.7到gcc4.8.0
  2. 人力资源学python有意义吗-python爬虫抖音 个人资料 仅供学习参考 切勿用于商业...
  3. BugkuCTF-Crypto题给你私钥吧
  4. 少走弯路的十条忠告收藏
  5. flops什么意思中文_不知道什么是FLOPs?进来瞧瞧~
  6. redis 集群 搭建(非哨兵)
  7. SlickEdit基本设置
  8. VS2015一键卸载所有组件工具,彻底卸载干净。
  9. 锐起无盘服务器蓝屏死机,正确配置减少锐起无盘系统死机蓝屏
  10. 其实特简单,Python 做一个漂亮女孩词云跳舞的视频
  11. iOS基础——UI控件之UIAlertController、UINavigationController、Segue、SVProgressHUD
  12. 查看iOS手机系统日志,在mac/window电脑上查看
  13. how velero works
  14. 北大郭炜算法课笔记整合
  15. 教授建议:科研人员压力太大,应该培养一些吃喝玩乐之类“庸俗”的爱好
  16. VMware Workstation 未能启动 VMware Authorization Service解决方法
  17. TiED:人类组织特异性增强子数据库
  18. postgreSQL+数组及复合类型=王炸
  19. 模式识别(Pattern Recognition)学习笔记(三十五)-- K-L变换与PCA
  20. 30分钟搞定极光sdk安卓客户端接入

热门文章

  1. ubuntu16.04下安装企业微信和微信(实测能用)
  2. 白鹭张晨樱:认知的边界,另类的独特
  3. delphi html 乱码,关于网页乱码解决 送给我一样的新手
  4. 矩阵的秩,特征值和特征向量 矩阵基础概念
  5. form表单提交数据到后台的方式
  6. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)
  7. java输出空格_java 中的空格怎么写?
  8. python读取mp3数据_使用Python访问mp3元数据
  9. 135-146 李游前端精品课程笔记
  10. 氮化镓充电器哪家做得好_【一点资讯】主流品牌已多达近10款: 氮化镓充电器怎么选? www.yidianzixun.com...