>  기사  >  Java  >  Java에서 HttpServletRequestWrapper로 구현된 xss 주입의 예

Java에서 HttpServletRequestWrapper로 구현된 xss 주입의 예

黄舟
黄舟원래의
2018-05-28 15:03:162888검색

다음은 commons-lang3-3.1.jar 패키지의 org.apache.commons.lang3.StringEscapeUtils.escapeHtml4() 메서드를 주로 사용하는 최근 프로젝트의 솔루션입니다.

해결 프로세스는 주로 사용자 입력 및 표시 출력의 두 단계로 구성됩니다. 즉, 입력 중에 a8093152e673feb7aba1828c43532094" ' &와 같은 특수 문자를 이스케이프 처리하고, 출력 중에 jstl의 fn:excapeXml("fff") 메서드를 사용하는 것입니다.

그 중 , 입력 중 필터링은 필터로 구현됩니다.

구현 프로세스:

web.xml에 필터 추가

    <filter>  
            <filter-name>XssEscape</filter-name>  
            <filter-class>cn.pconline.morden.filter.XssFilter</filter-class>  
        </filter>  
        <filter-mapping>  
            <filter-name>XssEscape</filter-name>  
            <url-pattern>/*</url-pattern>  
            <dispatcher>REQUEST</dispatcher>  
        </filter-mapping>

서블릿의 HttpServletRequestWrapper 구현 및 xss 공격을 수행할 수 있는 해당 메서드를 다시 작성:

    package cn.pconline.morden.filter;  
      
    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;  
      
    public class XssFilter implements Filter {  
          
        @Override  
        public void init(FilterConfig filterConfig) throws ServletException {  
        }  
      
        @Override  
        public void doFilter(ServletRequest request, ServletResponse response,  
                FilterChain chain) throws IOException, ServletException {  
            chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);  
        }  
      
        @Override  
        public void destroy() {  
        }  
    }

이 시점에서 입력 필터링이 완료됩니다.

페이지에 데이터를 표시할 때 fn을 사용하면 됩니다. :escapeXml() xss 취약점이 발생할 수 있는 출력을 이스케이프합니다.

복잡한 내용이 표시되면 구체적인 문제가 자세히 분석됩니다.

또한 필터링된 콘텐츠를 표시하지 않으려면 StringEscapeUtils.unescapeHtml4(.)를 사용할 수 있습니다. 이 방법은 StringEscapeUtils.escapeHtml4()

에 의해 이스케이프된 문자를 복원합니다.

위 내용은 Java에서 HttpServletRequestWrapper로 구현된 xss 주입의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.