1. 程式人生 > 實用技巧 >Tomcat伺服器配置X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy、X-Frame-Options

Tomcat伺服器配置X-Content-Type-Options、X-XSS-Protection、Content-Security-Policy、X-Frame-Options

Tomcat目錄下,配置請求頭

開啟tomcat/conf/web.xml,增加如下配置

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

備註:如果找不到org.apache.catalina.filters.HttpHeaderSecurityFilter相關jar,可以去高版本Tocat中的catalina中將對應的HttpHeaderSecurityFilter.class拷貝進當前的低版本中。

(用解壓縮工具開啟,直接拖拽進去,不要解壓再壓縮),然後重啟服務,再檢視請求頭,你就會看到配置已生效。如圖,左側為未配置的請求頭資訊,右側為配置後的請求頭資訊。

1、X-Frame-Options

是為了減少點選劫持(Clickjacking)而引入的一個響應頭,這個響應頭支援三種配置:

  • DENY:不允許被任何頁面嵌入;
  • SAMEORIGIN:不允許被本域以外的頁面嵌入;
  • ALLOW-FROM uri:不允許被指定的域名以外的頁面嵌入(Chrome現階段不支援);

2、X-XSS-Protection

這個響應頭是用來防範XSS的,現在主流瀏覽器都支援,並且預設都開啟了XSS保護,用這個header可以關閉它。它有幾種配置:

  • 0:禁用XSS保護;
  • 1:啟用XSS保護;
  • 1; mode=block:啟用XSS保護,並在檢查到XSS攻擊時,停止渲染頁面(例如IE8中,檢查到攻擊時,整個頁面會被一個#替換);

瀏覽器提供的XSS保護機制並不完美,但是開啟後仍然可以提升攻擊難度,總之沒有特別的理由,不要關閉它。

3、 X-Content-Type-Options

網際網路上的資源有各種型別,通常瀏覽器會根據響應頭的Content-Type欄位來分辨它們的型別。例如:"text/html"代表html文件,"image/png"是PNG圖片,"text/css"是CSS樣式文件。然而,有些資源的Content-Type是錯的或者未定義。這時,某些瀏覽器會啟用MIME-sniffing來猜測該資源的型別,解析內容並執行。

例如,我們即使給一個html文件指定Content-Type為"text/plain",在IE8-中這個文件依然會被當做html來解析。利用瀏覽器的這個特性,攻擊者甚至可以讓原本應該解析為圖片的請求被解析為JavaScript。通過下面這個響應頭可以禁用瀏覽器的型別猜測行為:

這個響應頭的值只能是nosniff,可用於IE8+和Chrome。

X-Content-Type-Options: nosniff

4.、X-Content-Security-Policy

這個響應頭主要是用來定義頁面可以載入哪些資源,減少XSS的發生。請參考:https://imququ.com/post/content-security-policy-reference.html

總結:如果使用Tomcat8以上的版本,可以忽略這些配置,8.0以上版本已自帶安全相關配置,如需用到,直接去tomcat/conf/web.xml啟用即可。