diff --git a/src/main/java/org/olat/admin/AdminModuleDispatcher.java b/src/main/java/org/olat/admin/AdminModuleDispatcher.java index ced3c8502198b7220b2c100901eaf1afff4a96ca..9225b47a48859a4f434ba50fd1d84a6fa4f89ea8 100644 --- a/src/main/java/org/olat/admin/AdminModuleDispatcher.java +++ b/src/main/java/org/olat/admin/AdminModuleDispatcher.java @@ -47,29 +47,26 @@ import org.olat.core.util.session.UserSessionManager; */ public class AdminModuleDispatcher implements Dispatcher { - private final static String PARAMETER_CMD = "cmd"; - private final static String PARAMETER_MSG = "msg"; - private final static String PARAMETER_MAX_MESSAGE = "maxsessions"; - private final static String PARAMETER_NBR_SESSIONS = "nbrsessions"; - private final static String PARAMETER_SESSIONTIMEOUT ="sec"; + private static final String PARAMETER_CMD = "cmd"; + private static final String PARAMETER_MSG = "msg"; + private static final String PARAMETER_MAX_MESSAGE = "maxsessions"; + private static final String PARAMETER_NBR_SESSIONS = "nbrsessions"; + private static final String PARAMETER_SESSIONTIMEOUT ="sec"; - private final static String CMD_SET_MAINTENANCE_MESSAGE = "setmaintenancemessage"; - private final static String CMD_SET_INFO_MESSAGE = "setinfomessage"; - private final static String CMD_SET_LOGIN_BLOCKED = "setloginblocked"; - private final static String CMD_SET_LOGIN_NOT_BLOCKED = "setloginnotblocked"; - private final static String CMD_SET_MAX_SESSIONS = "setmaxsessions"; - private final static String CMD_INVALIDATE_ALL_SESSIONS = "invalidateallsessions"; - private final static String CMD_INVALIDATE_OLDEST_SESSIONS = "invalidateoldestsessions"; - private final static String CMD_SET_SESSIONTIMEOUT = "sessiontimeout"; + private static final String CMD_SET_MAINTENANCE_MESSAGE = "setmaintenancemessage"; + private static final String CMD_SET_INFO_MESSAGE = "setinfomessage"; + private static final String CMD_SET_LOGIN_BLOCKED = "setloginblocked"; + private static final String CMD_SET_LOGIN_NOT_BLOCKED = "setloginnotblocked"; + private static final String CMD_SET_MAX_SESSIONS = "setmaxsessions"; + private static final String CMD_INVALIDATE_ALL_SESSIONS = "invalidateallsessions"; + private static final String CMD_INVALIDATE_OLDEST_SESSIONS = "invalidateoldestsessions"; + private static final String CMD_SET_SESSIONTIMEOUT = "sessiontimeout"; - - /** - * @see org.olat.core.dispatcher.Dispatcher#execute(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.String) - */ + @Override public void execute(HttpServletRequest request, HttpServletResponse response) { String cmd = request.getParameter(PARAMETER_CMD); - if (cmd.equalsIgnoreCase(CMD_SET_MAINTENANCE_MESSAGE) || cmd.equalsIgnoreCase(CMD_SET_INFO_MESSAGE)) { + if (CMD_SET_MAINTENANCE_MESSAGE.equalsIgnoreCase(cmd) || CMD_SET_INFO_MESSAGE.equalsIgnoreCase(cmd)) { handleSetMaintenanceOrInfoMessage(request, response, cmd); } else { if (CoreSpringFactory.getImpl(AdminModule.class).checkSessionAdminToken(request)) { @@ -182,7 +179,4 @@ public class AdminModuleDispatcher implements Dispatcher { DispatcherModule.sendForbidden(request.getPathInfo(), response); } } - - - } diff --git a/src/main/java/org/olat/core/servlets/StaticServlet.java b/src/main/java/org/olat/core/servlets/StaticServlet.java index 43b77cdba4a6a288c24c05907ad3ecf8872c75a5..319696843b400967df81ce3b18e1b9a798d1576a 100644 --- a/src/main/java/org/olat/core/servlets/StaticServlet.java +++ b/src/main/java/org/olat/core/servlets/StaticServlet.java @@ -107,7 +107,7 @@ public class StaticServlet extends HttpServlet { // version provided - remove it int start = pathInfo.indexOf("/", 2); int end = pathInfo.length(); - if(start <= end) { + if(start >= 2 && start <= end) { String staticRelPath = pathInfo.substring(start, end); String normalizedRelPath = ServletUtil.normalizePath(staticRelPath); if (normalizedRelPath == null) { @@ -170,7 +170,7 @@ public class StaticServlet extends HttpServlet { } } // log as error, file exists but wrongly mapped - log.warn("File exists but not mapped using version - use StaticMediaDispatch methods to create URL of static files! invalid URI::" + request.getRequestURI()); + log.warn("File exists but not mapped using version - use StaticMediaDispatch methods to create URL of static files! invalid URI::{}", request.getRequestURI()); } } diff --git a/src/main/java/org/olat/modules/webFeed/dispatching/FeedMediaDispatcher.java b/src/main/java/org/olat/modules/webFeed/dispatching/FeedMediaDispatcher.java index 95c8aa48e143fa30d9719f765fac18131ff957bf..c5da36388038e1f269f641516b52a6ee6cb31379 100644 --- a/src/main/java/org/olat/modules/webFeed/dispatching/FeedMediaDispatcher.java +++ b/src/main/java/org/olat/modules/webFeed/dispatching/FeedMediaDispatcher.java @@ -166,7 +166,7 @@ public class FeedMediaDispatcher implements Dispatcher, GenericEventListener { try { validatedUriCache.remove(key); } catch (Exception e) { - log.info("Cannot remove this key: " + key); + log.info("Cannot remove this key: {}", key); } } } @@ -186,6 +186,11 @@ public class FeedMediaDispatcher implements Dispatcher, GenericEventListener { } catch(NumberFormatException nfe) { // } + + if(requestedPath == null || requestedPath.length() == 0) { + DispatcherModule.sendBadRequest(request.getRequestURI(), response); + return; + } Path path = null; try { diff --git a/src/main/webapp-tomcat/WEB-INF/web.xml b/src/main/webapp-tomcat/WEB-INF/web.xml index f04c3db9f495858d4ec3cf4ff0a8e9d9fa3c55e3..fdb67bd02e09fb42f345f3ed64c2765f37d891e3 100644 --- a/src/main/webapp-tomcat/WEB-INF/web.xml +++ b/src/main/webapp-tomcat/WEB-INF/web.xml @@ -264,4 +264,13 @@ <exception-type>java.lang.Throwable</exception-type> <location>/errors/error.html</location> </error-page> + + <security-constraint> + <web-resource-collection> + <web-resource-name><strong>restricted methods</strong></web-resource-name> + <url-pattern>/*</url-pattern> + <http-method>TRACE</http-method> + </web-resource-collection> + <auth-constraint /> + </security-constraint> </web-app>