替换或重写Tomcat内置的404页面

替换或重写Tomcat内置的404页面

  • 准备一个Tomcat
  • 隐藏Tomcat的相关信息
    • 纯净版的Tomcat
    • 解决Tomcat启动乱码的问题
  • 替换或重写Tomcat内置的404页面
    • 创建新的首页和错误页面
    • 页面代码如下所示:
    • 创建首页index.html
    • 创建error_404.html页面
    • 创建其他错误页面
    • 创建编写web.xml(这个是全局配置)
    • 结果如下
    • 或者编写某个应用的web.xml(这个局部配置)
  • 思考

在这里插入图片描述
替换成
在这里插入图片描述

准备一个Tomcat

可以到Tomcat官网下载对相应的版本,这个是Tomcat的官网地址:https://tomcat.apache.org/。之所以写这篇文章,是因为客户漏洞扫描的时候,需要进行一些配置,问题如下。

  1. 不存在的页面 (404) 物理路径泄露,在请求不存在的页面时,远程 Web 服务器泄露 webroot 的物理路径。尽管将错误打印至输出在调试应用程序时很有用,但应在生产服务器上禁用此功能。这里可以这样考虑,直接替换Tomcat内置的404页面,这样就不知道Tomcat的相关信息了。
  2. Apache Tomcat 默认文件,远程 Apache Tomcat 服务器上已安装默认错误页面、默认索引页面、示例 JSP 和/或示例 servlet。应删除这些文件,因为它们可能会帮助攻击者揭露关于远程 Tomcat 安装或主机本身的信息。也给了建议:删除默认索引页面并删除示例 JSP 和 servlet。按照 Tomcat 或 OWASP 说明替换或修改默认错误页面。

隐藏Tomcat的相关信息

纯净版的Tomcat

纯净版的Tomcat启动之后,访问对应的内容。如果什么配置都不写,那么启动Tomcat的时候会乱码。如下图所示。
在这里插入图片描述

解决Tomcat启动乱码的问题

找到Tomcat的目录下的conf目录下的logging.properties文件,如下图所示,D:\TomcatTest\apache-tomcat-9.0.89-windows-x64\apache-tomcat-9.0.89\conf,可以使用VScode打开,然后将UTF-8替换成GBK。
在这里插入图片描述

在这里插入图片描述
保存之后,重新启动Tomcat。可以看到Tomcat的乱码问题解决了,从下面的图片中可以看到端口号是8080
在这里插入图片描述
访问:http://localhost:8080/,从图片中可以看到对应的Tomcat相关的信息。这些信息是要隐藏掉的。
在这里插入图片描述
当访问一个不存在的路径时如:http://localhost:8080/aaaaa,就会有404页面的问题,这个界面也会暴露Tomcat的问题。
在这里插入图片描述

替换或重写Tomcat内置的404页面

为了解决上述的两个问题,可以进行如下的配置。

创建新的首页和错误页面

为了解决上面说的客户反馈的问题,删除默认索引页面并删除示例 JSP 和 servlet。按照 Tomcat 或 OWASP 说明替换或修改默认错误页面。我们可以到Tomcat安装的目录下的webapps下,删除Tomcat的示例文件夹,如下图所示只留下ROOT目录即可
在这里插入图片描述
在这里插入图片描述
进入webapps/ROOT,然后再这个目录下,建立新的首页和错误页面。
在这里插入图片描述
在这里插入图片描述
因为需要建立新的首页页面和错误页面,这里可以使用VScode打开对应的文件夹。然后使用vscode创建对应的html页面或者jsp页面。
在这里插入图片描述

页面代码如下所示:

创建首页index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>这是Tomcat自定义的首页</title>
</head>
<body><div style="width: 400px; height: 400px;"><h1>这是Tomcat自定义的首页</h1></div>
</body>
</html>

在这里插入图片描述

创建error_404.html页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>404页面</title>
</head>
<body><div style="width: 400px; height: 400px; background-color: pink;"><h1>这是Tomcat自定义404页面,404,404</h1></div>
</body>
</html>

在这里插入图片描述

创建其他错误页面

error_400.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>400页面</title>
</head>
<body><div style="width: 400px; height: 400px; background-color: pink;"><h1>这是Tomcat自定义400页面,400,400</h1></div>
</body>
</html>

error_500.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>500页面</title>
</head>
<body><div style="width: 400px; height: 400px; background-color: pink;"><h1>这是Tomcat自定义500页面,500,500</h1></div>
</body>
</html>

error_501.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>501页面</title>
</head>
<body><div style="width: 400px; height: 400px; background-color: pink;"><h1>这是Tomcat自定义501页面,501,501</h1></div>
</body>
</html>

在这里插入图片描述
使用vscode创建好对应的html或者jsp页面之后,Tomcat的webapps/ROOT目录结构如下所示。
在这里插入图片描述

创建编写web.xml(这个是全局配置)

找到,Tomcat安装目录的conf/web.xml,可以使用Vscode打开它,我这里是使用Vscode打开它。因为这是全局配置,所以在这个Tomcat下的任何http路径,只要出现路径不存在也就是404的时候,就会显示自定义的错误404页面了。
在这里插入图片描述
对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_500.html</location></error-page><error-page><error-code>501</error-code><location>/error_501.html</location></error-page>

本人习惯,一般新增的配置,我都是直接放在文件最后的位置的,记住了配置了文件之后,一定要保存一下,然后重新启动Tomcat,在访问网站。具体配置如下图所示。
在这里插入图片描述

结果如下

当访问http://localhost:8080/时:
在这里插入图片描述

当访问一个不存在的页面时:http://localhost:8080/aaaaa
在这里插入图片描述

或者编写某个应用的web.xml(这个局部配置)

这两个既可以同时配置,也可以单独配置,也可以只设置一个。结果是一样的。找打webapps/ROOT/WEB-INF/web.xml,配置好之后记得保存一下,然后再重启Tomcat。
在这里插入图片描述

  <!-- 这是自定义的错误页面配置内容 --><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_500.html</location></error-page><error-page><error-code>501</error-code><location>/error_501.html</location></error-page>

在这里插入图片描述
我们可以注释掉上面那个全局配置,然后只进行局部配置,访问试一下。测试得到全局配置一样的结果。

思考

如果,我们把webapps目录下的ROOT也删除了,然后再webapps目录下部署一个名为aaa的目录的应用,然后把错误页面也放到aaa目录中,全局配置的web.xml也注释掉了。然后再部署应用的web.xml进行局部错误页面配置,会不会生效呢?这里盲猜可以把ROOT想象成aaa,只不过访问ROOT目录的时候是http://localhost:8080/,而访问aaa目录下的时候就是http://localhost8080/aaa/,如果在aaa配置了错误页面,那么在路径中访问不存在的路径http://localhost8080/aaa/daodfjaodfa/时才会进入aaa的配置页面,如果是直接访问http://localhost8080/daodfjaodfa/,因为没有aaa的路径匹配,再加上全局的web.xml配置已经注释掉了,那么有可能就是进入Tomcat提供的默认404哪个页面,也就是能看到Tomcat版本号的那个404页面。这个后续有时间我再测试一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当Windows台式电脑或笔记本电脑随机关机时,请先从这8个方面检查

序言 你的Windows笔记本电脑或PC是否意外关闭?笔记本电脑电池故障、电源线松动、过热、电源设置错误、驱动程序过时或电脑组件故障等问题都可能是罪魁祸首。如果你对这个问题感到沮丧,试试这些解决方案。 进行一些初步检查 与从电池中获取电力的笔记本电脑不同,台式电脑依…

基于阿里云MQTT服务,设计一个STM32的智能光伏控制系统

摘要 这篇文章详细介绍了利用STM32F103C8T6单片机实现光伏发电系统的关键技术。全文分为四章&#xff1a;第一章阐述了光伏发电的背景、意义及应用场景&#xff0c;强调其在绿色能源领域的重要性。第二章介绍了如何通过STM32F103C8T6及光敏电阻和伺服电机实现光线追踪系统&…

RSA密码系统的特定密钥泄露攻击与Coppersmith方法的应用

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 RSA密码系统作为当前最广泛使用的公钥加密算法之一&#xff0c;其安全性依赖于大整数分解问题的困难性。然而&#xff0c;随着计…

Kafka——消费者偏移量存储问题

目录 引入—— 存储在哪 为啥最开始是存储在zookeeper中的&#xff1f; 为啥不继续用zookeeper存储了? 回顾*分区副本机制 每个消费者在一个消费者组中都有自己的偏移量&#xff0c;用于记录消费到的消息位置。消费者可以通过提交偏移量来告知 Kafka 服务器它已经处理了哪些消…

C++ 反转一个二进制串

描述 一个32位有符号整数&#xff0c;用二进制编码来表示。现需要将该二进制编码按位反转&#xff0c;计算出反转后的值。 示例1 输入&#xff1a; 1 返回值&#xff1a; -2147483648 说明&#xff1a; 00000000 00000000 00000000 00000001 翻转后为 10000000 000000…

移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析

城市管理综合执法管理平台实现执法办案、业务全流程在线办理&#xff0c;依托移动端PC端的“两端”应用模式&#xff0c;保障能够通过信息化手段进行日常的执法办案工作&#xff0c;强化执法监督功能。提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析等功能&a…

VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构

VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构 请访问原文链接&#xff1a;VMware vSphere Bitfusion 4.5.4 - 面向 AI 和 ML 应用提供弹性基础架构&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VM…

Apache HTTP server benchmarking tool(ab)-服务器基准测试工具一文上手

这是一个非常简单的工具&#xff0c;用途比较有限&#xff0c;只能针对单个URL进行尽可能快的压力测试。 ​ Windows下如何下载安装&#xff08;Linux安装十分简单&#xff09; Apache HTTP server benchmarking tool(ab)下载地址 ​ 资源 2.4版本 httpd-2.4.48-o111k-x64…

赋能AI未来,景联文科技推出高质量亿级教育题库、多轮对话以及心理大模型数据

当前&#xff0c;大模型正如雨后春笋般不断涌现&#xff0c;不断推动着大模型产业的应用实践进入加速发展的新阶段。 景联文科技是AI数据服务公司&#xff0c;提供海量优质大模型数据集&#xff0c;涵盖文本、图像、视频、音频等多类型数据&#xff0c;致力于为不同训练阶段的算…

maven:中央仓库验证方式改变:401 Content access is protected by token

前几天向maven中央仓库发布版本&#xff0c;执行上传命令mvn release:perform时报错了&#xff1a; [ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.13:deploy (injected-nexus-deploy) on project xxxxx: Failed to deploy artifacts: …

基于Redis和openresty实现高并发缓存架构

目录 概述缓存架构设计实践代码路由业务封装redis 效果 概述 本文是对项目中 QPS 高并发相关问题的一种解决方案&#xff0c;利用 Nginx 与 Redis 的高并发、超低延迟响应&#xff0c;结合 Canal 进行实现。 openrestry官网 当程序需要提供较高的并发访问时&#xff0c;往往需…

0117__Makefile 中:= ?= += =的区别

Makefile 中: ? 的区别-CSDN博客

【单片机】MSP430G2553单片机 Could not find MSP-FET430UIF on specified COM port 解决方案

文章目录 MSP430G2553开发板基础知识解决办法如何实施解决办法4步骤一步骤二步骤三 MSP430G2553开发板基础知识 MSP430G2553开发板如下图&#xff0c;上半部分就是UIF程序下载调试区域的硬件。个人觉得MSP430G2553开发板的这个部分没有做好硬件设计&#xff0c;导致很多系统兼…

计算机组成原理笔记-第1章 计算机系统概论

第一章 计算机系统概论 笔记PDF版本已上传至Github个人仓库&#xff1a;CourseNotes&#xff0c;欢迎fork和star&#xff0c;拥抱开源&#xff0c;一起完善。 该笔记是最初是没打算发网上的&#xff0c;所以很多地方都为了自我阅读方便&#xff0c;我理解了的地方就少有解释&a…

【鸿蒙】 模拟器运⾏

【鸿蒙】HUAWEI DevEco Studio安装-CSDN博客 【鸿蒙】创建第⼀个鸿蒙项⽬-CSDN博客 点击 Tools 菜单下的 Device Manager 点击 Install &#xff0c;安装模拟器 下载模拟器相关的SDK&#xff0c;点击 Finish 选择安装⽬录&#xff0c;点击 New Emulator 选择设备类型&#…

【ARMv8/ARMv9 硬件加速系列 2 -- ARM NEON 加速运算介绍】

文章目录 ARM NEONNEON 向量寄存器NEON 寄存器使用方式NEON 寄存器的视图NEON 寄存器别名NEON 寄存器的用途ARM NEON 在ARMv8架构中,引入了一组新的寄存器,称为向量寄存器(Vector Registers),用于支持高效的向量和浮点计算。这些寄存器是SIMD(Single Instruction, Multi…

PCL common中常见的基础功能函数

文章目录 一、common模块中的头文件二、common模块中的基本函数1、angles.h2、centroid.h1)计算给定一群点的3D中心点,并且返回一个三维向量2)计算给定的三维点云的协方差矩阵。3)计算正则化的3*3的协方差矩阵以及给定点云数据的中心点4)利用一组点的指数对其进行一般的、…

【SQL】in 和 exists 的区别

在 SQL 中&#xff0c;IN 和 EXISTS 都用于过滤查询结果&#xff0c;但它们在使用场景和性能方面有一些区别。下面是详细的解释&#xff1a; 1. IN IN 操作符用于检查某个值是否存在于一个指定的列表或子查询的结果集中。IN 常用于较小的数据集和静态值列表。 语法 SELECT …

报错:has naming conflicts with other components, ignored

在 Vue 项目编译时&#xff0c;出现如下报错 [unplugin-vue-components] component "xxx"(xxx/Index.vue) has naming conflicts with other components, ignored. [unplugin-vue-components] component "xxx"(xxx/Index.vue) has naming conflicts with …