ホームページ  >  記事  >  Java  >  Java の HttpServletRequestWrapper によって実装された xss インジェクションの例

Java の HttpServletRequestWrapper によって実装された xss インジェクションの例

黄舟
黄舟オリジナル
2018-05-28 15:03:162886ブラウズ

これは最近のプロジェクトでのソリューションです。主に commons-lang3-3.1.jar パッケージの org.apache.commons.lang3.StringEscapeUtils.escapeHtml4() メソッドを使用します。

解決プロセスには主に 2 つのステップが含まれます: ユーザー入力と表示出力: 入力中に 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() {  
        }  
    }

この時点で、入力フィルタリングは完了です

ページにデータを表示するときは、 :escapeXml() を使用するだけで、xss の脆弱性が発生する可能性のある出力をエスケープします

複雑なコンテンツの表示、特定の問題が詳細に分析されます。

さらに、フィルターされたコンテンツを表示したくない場合は、StringEscapeUtils.unescapeHtml4() を使用できます。このメソッドは、StringEscapeUtils.escapeHtml4() でエスケープされた文字を復元します

以上がJava の HttpServletRequestWrapper によって実装された xss インジェクションの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。