Heim > Java > javaLernprogramm > Hauptteil

Beispiel für eine von HttpServletRequestWrapper in Java implementierte XSS-Injection

黄舟
Freigeben: 2018-05-28 15:03:16
Original
2948 Leute haben es durchsucht

Hier ist unsere Lösung in einem aktuellen Projekt, das hauptsächlich die Methode org.apache.commons.lang3.StringEscapeUtils.escapeHtml4() des Pakets commons-lang3-3.1.jar verwendet.

Der Lösungsprozess umfasst hauptsächlich zwei Schritte: Benutzereingabe und Anzeigeausgabe: Escapezeichen für Sonderzeichen wie <>" ' & während der Eingabe und Verwendung der fn:excapeXml("fff")-Methode von jstl während der Ausgabe.

Unter anderem wird die Filterung während der Eingabe durch einen Filter implementiert

Implementierungsprozess:

Einen Filter in web.xml hinzufügen

    <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>
Nach dem Login kopieren

Der Die Implementierung von XssFilter besteht darin, die Filterschnittstelle des Servlets zu implementieren

    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() {  
        }  
    }
Nach dem Login kopieren

Der Schlüssel liegt in der Implementierung von

    package cn.pconline.morden.filter;  
      
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletRequestWrapper;  
      
    import org.apache.commons.lang3.StringEscapeUtils;  
      
    public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {  
      
        public XssHttpServletRequestWrapper(HttpServletRequest request) {  
            super(request);  
        }  
      
        @Override  
        public String getHeader(String name) {  
            return StringEscapeUtils.escapeHtml4(super.getHeader(name));  
        }  
      
        @Override  
        public String getQueryString() {  
            return StringEscapeUtils.escapeHtml4(super.getQueryString());  
        }  
      
        @Override  
        public String getParameter(String name) {  
            return StringEscapeUtils.escapeHtml4(super.getParameter(name));  
        }  
      
        @Override  
        public String[] getParameterValues(String name) {  
            String[] values = super.getParameterValues(name);  
            if(values != null) {  
                int length = values.length;  
                String[] escapseValues = new String[length];  
                for(int i = 0; i < length; i++){  
                    escapseValues[i] = StringEscapeUtils.escapeHtml4(values[i]);  
                }  
                return escapseValues;  
            }  
            return super.getParameterValues(name);  
        }  
          
    }
Nach dem Login kopieren

An diesem Punkt ist die Eingabefilterung abgeschlossen

Wenn Sie Daten auf der Seite anzeigen, verwenden Sie einfach fn:escapeXml(), um zu erkennen, wo XSS-Schwachstellen auftreten können Ausgabe.

Zeigen Sie komplexe Inhalte an und analysieren Sie die spezifischen Probleme im Detail

Wenn Sie den gefilterten Inhalt nicht anzeigen möchten, können Sie außerdem StringEscapeUtils.unescapeHtml4() verwenden. Methode. Stellen Sie die von StringEscapeUtils.escapeHtml4()

maskierten Zeichen wieder her.

Das obige ist der detaillierte Inhalt vonBeispiel für eine von HttpServletRequestWrapper in Java implementierte XSS-Injection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage