首頁  >  文章  >  Java  >  Java中HttpServletRequestWrapper實作xss注入的實例

Java中HttpServletRequestWrapper實作xss注入的實例

黄舟
黄舟原創
2018-05-28 15:03:162942瀏覽

這裡說下最近專案中我們的解決方案,主要用到commons-lang3-3.1.jar這個套件的org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()這個方法。

解決過程主要在使用者輸入和顯示輸出兩步:在輸入時對特殊字元如a8093152e673feb7aba1828c43532094" ' & 轉義,在輸出時用jstl的fn:excapeXml("fff")方法。的實作方式是實作servlet的Filter介面

    <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>

 關鍵是XssHttpServletRequestWrapper的實作方式,繼承servlet的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() {  
        }  
    }

到此為止,在輸入的過濾就完成了。

複雜內容的顯示,具體問題再具體分析。轉義之後的字元恢復原樣。

以上是Java中HttpServletRequestWrapper實作xss注入的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn