1. 程式人生 > >記錄下死磕過的一個坑

記錄下死磕過的一個坑

目錄

@(終於等到你)

寫在前面

最近公司專案提了個很正常的需求,為什麼說是很正常的需求呢,保守點說,大多數的專案都會預設有這樣的功能,那就是tomcat指定404頁面,具體情況請聽我再囉嗦囉嗦。有這麼一場景,有人想攻擊一家的專案,但是攻擊前需要了解該公司專案的具體組成部分才可以進行真正的攻擊吧,但是我也不知道該專案都有哪些目錄?目錄下有哪些檔案?可以用笨方法就是去試,用一個大概常用的路徑去訪問該專案地址,比如ip/專案名/xxx,不存在的路徑會看到預設的404頁面會顯示tomcat的版本和其它的一些資訊,敏感資訊會暴露,有點危險,所以我公司不想讓別人看到這些,那就需要指定一個頁面,找不到的路徑都要轉發這個頁面。

1.修改web.xml

修改的檔案路徑如下,只要放在tomcat下的都走這個配置

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

在web.xml檔案最後新增內容如下,error-code是瀏覽器狀態碼為404就轉發404.jsp頁面,這裡需要注意一下,我就載在了這裡,location是當前執行專案的下的路徑,通俗點講就是,一個專案名為songo,那麼404.jsp頁面就要放在songo專案下,對應的路徑就是/songo/404.jsp,其實我也不知道為什麼是這樣設定,但是就是這樣好使了

    <error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
    </error-page>
</web-app>

這樣的話就有個問題,如果tomcat下有多個專案,那每個專案根下都要放一個相同的404.jsp頁面,如果您有什麼更好的辦法歡迎留言

2.404頁面注意問題

404.jsp需要新增2行內容,如下

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

這2行主要是告訴瀏覽器訪問伺服器不存在的資源跳轉的錯誤處理頁面,但是返回正常的狀態碼,並且正常顯示頁面內容


另外,具體頁面請到 github 自行下載

說在最後,如果有哪裡有問題或寫的不對的,請留言,我會盡量在第一時間給您答覆