Inhaltsverzeichnis
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
Der Schlüssel liegt in der Implementierung von
Heim Java javaLernprogramm Beispiel für eine von HttpServletRequestWrapper in Java implementierte XSS-Injection

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

May 28, 2018 pm 03:03 PM
java 实例

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

    &lt;filter&gt;  
            &lt;filter-name&gt;XssEscape&lt;/filter-name&gt;  
            &lt;filter-class&gt;cn.pconline.morden.filter.XssFilter&lt;/filter-class&gt;  
        &lt;/filter&gt;  
        &lt;filter-mapping&gt;  
            &lt;filter-name&gt;XssEscape&lt;/filter-name&gt;  
            &lt;url-pattern&gt;/*&lt;/url-pattern&gt;  
            &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;  
        &lt;/filter-mapping&gt;
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 &lt; 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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Quadratwurzel in Java

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Perfekte Zahl in Java

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Zufallszahlengenerator in Java

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Armstrong-Zahl in Java

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Weka in Java

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Smith-Nummer in Java

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

Fragen zum Java Spring-Interview

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Brechen oder aus Java 8 Stream foreach zurückkehren?

See all articles