구멍:안전 하지 않 은 http 요청 방법,tomcat 에서 http method 를 사용 하지 않 습 니 다.코드 해결

2143 단어 tomcathttpweb
질문 설명:fiddler 를 통 해 raw 로 HTTP 요청 을 재현 하고 GET 를 TRACE 로 변경 하여 다시 요청 합 니 다.tomcat 반환 405,head 포함
Allow:POST,GET,DELETE,OPTIONS,PUT,HEAD
해결 방법:filter 를 사용 하여 여과 하고 처리 합 니 다.
1.tomcat 의 server.xml 를 수정 하여 trace 방법 을 허용 합 니 다.
 
2.웹.xml 수정,필터 추가
  
    filterUtil
    com.utils.FilterUtil
  
  
    filterUtil
    /*
  

 
 
3.filter 클래스 추가
package com.utils;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class FilterUtil implements Filter {
	Logger log=LoggerFactory.getLogger(this.getClass());
	
	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
	    HttpServletRequest request = (HttpServletRequest) arg0;
	    HttpServletResponse response = ((HttpServletResponse) arg1); 
		String m=request.getMethod();
		if(!"GET".equals(m)&&!"POST".equals(m)){
			System.out.println("GET or POST only  ");
			response.setHeader("Allow", "GET,POST");
			response.setStatus(405);
			return;
		}
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
	}
	
}

 잘못된 method 요청 에 따라 효 과 를 볼 수 있 습 니 다漏洞:不安全的http请求方法,tomcat 禁用http method。代码解决_第1张图片

좋은 웹페이지 즐겨찾기