写在前面

最近公司项目提了个很正常的需求,为什么说是很正常的需求呢,保守点说,大多数的项目都会默认有这样的功能,那就是tomcat指定404页面,具体情况请听我再啰嗦啰嗦。有这么一场景,有人想攻击一家的项目,但是攻击前需要了解该公司项目的具体组成部分才可以进行真正的攻击吧,但是我也不知道该项目都有哪些目录?目录下有哪些文件?可以用笨方法就是去试,用一个大概常用的路径去访问该项目地址,比如ip/项目名/xxx,不存在的路径会看到默认的404页面会显示tomcat的版本和其它的一些信息,敏感信息会暴露,有点危险,所以我公司不想让别人看到这些,那就需要指定一个页面,找不到的路径都要转发这个页面。

1.修改web.xml

修改的文件路径如下,只要放在tomcat下的都走这个配置

1
/*/*/tomcat/conf/web.xml

在web.xml文件最后添加内容如下,error-code是浏览器状态码为404就转发404.jsp页面,这里需要注意一下,我就载在了这里,location是当前运行项目的下的路径,通俗点讲就是,一个项目名为songo,那么404.jsp页面就要放在songo项目下,对应的路径就是/songo/404.jsp,其实我也不知道为什么是这样设置,但是就是这样好使了

1
2
3
4
5
    <error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
</web-app>

这样的话就有个问题,如果tomcat下有多个项目,那每个项目根下都要放一个相同的404.jsp页面,如果您有什么更好的办法欢迎留言

2.404页面注意问题

404.jsp需要添加2行内容,如下

1
2
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk" isErrorPage="true"%>
<%response.setStatus(HttpServletResponse.SC_OK);%>

这2行主要是告诉浏览器访问服务器不存在的资源跳转的错误处理页面,但是返回正常的状态码,并且正常显示页面内容
另外,具体页面请到 github 自行下载

说在最后,如果有哪里有问题或写的不对的,请留言,我会尽量在第一时间给您答复