


Beispiel für eine von HttpServletRequestWrapper in Java implementierte XSS-Injection
May 28, 2018 pm 03:03 PMHier 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>
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() { } }
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); } }
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Brechen oder aus Java 8 Stream foreach zurückkehren?
