1. 程式人生 > 實用技巧 >關於解決綠盟科技安全評估報告中的web漏洞

關於解決綠盟科技安全評估報告中的web漏洞

關於解決綠盟科技安全評估報告中的web漏洞

3.1.1.Apache Tomcat 檔案包含漏洞(CVE-2020-1938)

方式一:升級tomcat版本,
對於springboot專案,需要更換內建tomcat
更換步驟:
1 進入springboot共成的parent可以看到tomcat的版本

2 在自己的pom檔案裡覆蓋掉內建的tomcat版本
::: details 點選檢視程式碼

        <tomcat.version>9.0.31</tomcat.version>

            <dependency>
				<groupId>org.apache.tomcat.embed</groupId>
				<artifactId>tomcat-embed-core</artifactId>
				<version>${tomcat.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.tomcat</groupId>
				<artifactId>tomcat-juli</artifactId>
				<version>${tomcat.version}</version>
			</dependency>
            <!--排除依賴-->
            <dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-web</artifactId>
				<exclusions>
					<exclusion>
						<groupId>org.springframework.boot</groupId>
						<artifactId>spring-boot-starter-tomcat</artifactId>
					</exclusion>
				</exclusions>
			</dependency>


:::

效果:

3 啟動專案看一下

沒有報錯,修改成功

若不需要使用Tomcat AJP協議,可直接關閉AJP Connector,或將其監聽地址改為僅監聽本機localhost。
具體操作:

(1)編輯 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 為 Tomcat 的工作目錄):

<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" /> 

(2)將此行註釋掉(也可刪掉該行):

<!--<Connectorport="8009" protocol="AJP/1.3"redirectPort="8443" />-->

(3)儲存後需重新啟動Tomcat,規則方可生效。

3.1.2.檢測到會話cookie中缺少HttpOnly屬性

由於在報告中明確的指出了是哪個介面 找到介面新增如下配置

cookie.setHttpOnly(true);

3.1.3.點選劫持:X-Frame-Options未配置

tomcat配置

進入tomcat目錄下的conf,找到web.xml配置檔案,搜尋httpHeaderSecurity

,
找到如下配置:


修改後結果:


::: details 點選檢視程式碼

    <filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
      <init-param>
        <param-name>antiClickJackingEnabled</param-name>
        <param-value>true</param-value>
      </init-param>
      <init-param>
        <param-name>antiClickJackingOption</param-name>
        <param-value>SAMEORIGIN</param-value>
      </init-param>
    </filter>

:::

修改之後,重啟專案
瀏覽器訪問介面可以看到:

即配置成功
這裡有一個問題
配置http的響應頭資訊:屬性名X-Frame-Options。
可以配置的引數有兩個:

DENY:瀏覽器拒絕當前頁面載入任何Frame頁面。
SAMEORIGIN:頁面只能載入入同源域名下的頁面。

我配置的是第二個 但是訪問介面卻是第一個,不知道是什麼原因。

springBoot專案

對於springBoot專案,可以使用新增過濾器的方式解決
::: details 點選檢視程式碼


/**
* @Description: 解決 點選劫持:X-Frame-Options未配置
* @Param:
* @return:
* @Date: 2020/7/24
*/
@Component
public class CookieFrameFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        resp.addHeader("x-frame-options", "SAMEORIGIN");
        filterChain.doFilter(req, resp);
    }

    @Override
    public void destroy() {

    }
}


:::

修改後重啟專案

配置成功
注意需要新增@Component註解,使改過濾器交由spring管理,否則不生效