Springboot 使用內置tomcat禁止不安全HTTP的方法

Springboot 內置tomcat禁止不安全HTTP方法

1、在tomcat的web.xml中可以配置如下內容

讓tomcat禁止不安全的HTTP方法

<security-constraint>  
   <web-resource-collection>  
      <url-pattern>/*</url-pattern>  
      <http-method>PUT</http-method>  
   <http-method>DELETE</http-method>  
   <http-method>HEAD</http-method>  
   <http-method>OPTIONS</http-method>  
   <http-method>TRACE</http-method>  
   </web-resource-collection>  
   <auth-constraint>  
   </auth-constraint>  
</security-constraint>  
<login-config>  
  <auth-method>BASIC</auth-method>  
</login-config>

2、Spring boot使用內置tomcat

沒有web.xml配置文件,可以通過以下配置進行,簡單來說就是要註入到Spring容器中

@Configuration
public class TomcatConfig { 
    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcatServletContainerFactory = new TomcatEmbeddedServletContainerFactory();
        tomcatServletContainerFactory.addContextCustomizers(new TomcatContextCustomizer(){
 
   @Override
   public void customize(Context context) {
    SecurityConstraint constraint = new SecurityConstraint();
    SecurityCollection collection = new SecurityCollection();
    //http方法
    collection.addMethod("PUT");
    collection.addMethod("DELETE");
    collection.addMethod("HEAD");
    collection.addMethod("OPTIONS");
    collection.addMethod("TRACE");
    //url匹配表達式
    collection.addPattern("/*");
    constraint.addCollection(collection);
    constraint.setAuthConstraint(true);
    context.addConstraint(constraint );
    
    //設置使用httpOnly
    context.setUseHttpOnly(true);    
   }
        });
        return tomcatServletContainerFactory;
    } 
}

啟用不安全的HTTP方法

問題描述:

可能會在Web服務器上上載、修改或刪除Web頁面、腳本和文件。

‘啟用瞭不安全的HTTP方法:OPTIONS /system HTTP/1.1Allow: HEAD, PUT, DELETE, TRACE, OPTIONS, PATCH

上述方法的用途:

  • Options、Head、Trace:主要由應用程序來發現和跟蹤服務器支持和網絡行為;
  • Get:檢索文檔;
  • Put和Post:將文檔提交到服務器;
  • Delete:銷毀資源或集合;
  • Mkcol:創建集合
  • PropFind和PropPatch:針對資源和集合檢索和設置屬性;
  • Copy和Move:管理命名空間上下文中的集合和資源;
  • Lock和Unlock:改寫保護

很顯然上述操作明細可以對web服務器進行上傳、修改、刪除等操作,對服務造成威脅。雖然WebDAV有權限控制但是網上一搜還是一大堆的攻擊方法,所以如果不需要這些方法還是建議直接屏蔽就好瞭。

解決方案:

在web應用中的web.xml加上如下內容

<security-constraint>
        <web-resource-collection>
            <web-resource-name>disp</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
            <http-method>HEAD</http-method>
            <http-method>OPTIONS</http-method>
            <http-method>TRACE</http-method>
            <http-method>PATCH</http-method>
        </web-resource-collection>
        <auth-constraint></auth-constraint>
    </security-constraint>

標簽介紹:

  • <security-constraint>用於限制對資源的訪問;
  • <auth-constraint>用於限制那些角色可以訪問資源,這裡設置為空就是禁止所有角色用戶訪問;
  • <url-pattern>指定需要驗證的資源
  • <http-method>指定那些方法需要驗證

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: