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.
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