From ee4dd2a078fd3e01a5fc9028fb1c279a8570d4f5 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 29 Jun 2021 00:07:56 +0200 Subject: [PATCH] Issue #6473 - Improve alias checking in PathResource. * Reverted %-escape handling for URI query parts. * Performing canonicalization in ServletContext.getResource(), and improving alias checking in ContextHandler.getResource(). * Performing canonicalization checks in Resource.addPath() to avoid navigation above of the root. * Test added and fixed. * Various cleanups. Signed-off-by: Simone Bordet --- .../java/org/eclipse/jetty/http/HttpURI.java | 67 +++++++++---------- .../org/eclipse/jetty/http/HttpURITest.java | 20 ++++++ .../maven/plugin/JettyWebAppContext.java | 16 +++-- .../jetty/rewrite/handler/RedirectUtil.java | 4 +- .../rewrite/handler/ValidUrlRuleTest.java | 14 +++- .../jetty/server/handler/ContextHandler.java | 6 +- .../jetty/server/handler/ResourceHandler.java | 2 + .../jetty/server/HttpConnectionTest.java | 6 ++ .../ContextHandlerGetResourceTest.java | 21 ++++-- .../eclipse/jetty/servlet/RequestURITest.java | 6 +- .../java/org/eclipse/jetty/util/URIUtil.java | 1 - .../jetty/util/resource/FileResource.java | 7 +- .../jetty/util/resource/PathResource.java | 25 ++++--- .../eclipse/jetty/util/resource/Resource.java | 1 + .../jetty/util/resource/URLResource.java | 7 +- .../jetty/util/URIUtilCanonicalPathTest.java | 20 ++++++ .../jetty/util/resource/ResourceTest.java | 18 +++++ 17 files changed, 167 insertions(+), 74 deletions(-) diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java index 5dc6db1302aa..0a2e758caf39 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java @@ -36,7 +36,7 @@ /** * Http URI. * Parse an HTTP URI from a string or byte array. Given a URI - * http://user@host:port/path;param1/%2e/info;param2?query#fragment + * {@code http://user@host:port/path;param1/%2e/info;param2?query#fragment} * this class will split it into the following optional elements: