„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie ändere ich Anforderungsparameter mit einem Servlet-Filter, wenn Änderungen am Quellcode verboten sind?

Wie ändere ich Anforderungsparameter mit einem Servlet-Filter, wenn Änderungen am Quellcode verboten sind?

Veröffentlicht am 21.12.2024
Durchsuche:719

How to Modify Request Parameters with a Servlet Filter When Source Code Changes Are Forbidden?

Anforderungsparameter mit Servlet-Filter ändern

In einer vorhandenen Webanwendung sind Sie mit einer XSS-Sicherheitslücke konfrontiert und dürfen die Quelle nicht ändern Code. Um dieses Problem zu beheben, beabsichtigen Sie, einen Servlet-Filter zu verwenden, um Anforderungsparameter zu bereinigen, bevor sie die anfällige Seite erreichen.

Das bereitgestellte Codebeispiel demonstriert Ihre Filterklasse, XssFilter:

import java.io.*;
import javax.servlet.*;

public final class XssFilter implements Filter {

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException
  {
    String badValue = request.getParameter("dangerousParamName");
    String goodValue = sanitize(badValue);
    // Unable to modify parameter using request.setParameter
    chain.doFilter(request, response);
  }

  public void destroy() {
  }

  public void init(FilterConfig filterConfig) {
  }
}

Sie sind jedoch auf ein Hindernis gestoßen: HttpServletRequest fehlt die setParameter-Methode. Um diese Einschränkung zu überwinden, ziehen Sie die folgenden Ansätze in Betracht:

Verwenden von HttpServletRequestWrapper:

Verwenden Sie die HttpServletRequestWrapper-Klasse, um einen Wrapper um die ursprüngliche Anfrage zu erstellen. Sie können die getParameter-Methode überschreiben, um den bereinigten Wert zurückzugeben. Übergeben Sie dann die umschlossene Anfrage an chain.doFilter anstelle des Originals.

Dieser Ansatz erfordert Unterklassen und umschließt die ursprüngliche Anfrage, entspricht jedoch der Servlet-API, indem die Filterung an die umschlossene Anfrage delegiert wird.

Einstellung des Anforderungsattributs:

Alternativ können Sie das Ziel-Servlet oder die Ziel-JSP so ändern, dass stattdessen ein Anforderungsattribut erwartet wird als ein Anforderungsparameter für den gefährlichen Parameter. Ihr Filter kann dann den Parameter untersuchen, bereinigen und das Anforderungsattribut mit request.setAttribute auf den bereinigten Wert setzen.

Diese Methode ist eleganter, da sie Unterklassen oder Spoofing vermeidet, aber Änderungen am Code der Anwendung erfordert um das Anforderungsattribut anstelle des Parameters zu verwenden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3