zoukankan      html  css  js  c++  java
  • 远端WWW服务支持TRACE请求

    在这里插入图片描述

    TOMCAT

    • tomcatweb.xml配置文件中,对不安全的方法进行拦截,禁用TRACEHEADPUTDELETEOPTIONS请求方式:
    <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>  
    
    • tomcat的在server.xml中先允许TRACE请求,再在web.xml中禁用TRACE,以此禁用TRACE请求(广大网友都是这样实现的,不明白ing)
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" allowTrace="true"
                   redirectPort="8443" />
    

    SpringBoot

    • TomcatConfig.java
    import org.apache.catalina.Context;
    import org.apache.tomcat.util.descriptor.web.SecurityCollection;
    import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
    import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
    import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer;
    import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class TomcatConfig {
    	
    	@Bean
        public EmbeddedServletContainerFactory servletContainer() {
            TomcatEmbeddedServletContainerFactory tomcatServletContainerFactory = new TomcatEmbeddedServletContainerFactory();
            tomcatServletContainerFactory.addContextCustomizers(new TomcatContextCustomizer(){
    			@Override
    			public void customize(Context context) {
    				SecurityConstraint securityConstraint  = new SecurityConstraint();
    				securityConstraint.setUserConstraint("CONFIDENTIAL");  
    				SecurityCollection collection = new SecurityCollection();
    				
    				collection.addPattern("/*");  
                    collection.addMethod("HEAD");  
                    collection.addMethod("PUT");  
                    collection.addMethod("DELETE");  
                    collection.addMethod("OPTIONS");  
                    collection.addMethod("TRACE");  
                    collection.addMethod("COPY");  
                    collection.addMethod("SEARCH");  
                    collection.addMethod("PROPFIND");  
                    securityConstraint .addCollection(collection);  
                    context.addConstraint(securityConstraint );  
    			}
            });
            
            //禁用TRACE请求
            tomcatServletContainerFactory.addConnectorCustomizers(connector -> {
                connector.setAllowTrace(true);
            });
            return tomcatServletContainerFactory;
        }
    }
    

    .end

  • 相关阅读:
    javascript动态创建Option选项
    Javascript中最常用的25个经典技巧
    C#常用函数和方法集
    C#邮件发送程序
    CSS菜单
    笔记本将有线变无线网
    svn有权限但是不能提交的原因
    IE6在https下认为iframe和about:blank不安全
    VS2008创建MFC项目提示无法找到userimages.bmp
    往数据库中插入流数据的问题
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/13429957.html
Copyright © 2011-2022 走看看