This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch release18.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release18.12 by this push:
     new 474e806816 Improved: Prevent special encoded characters sequences in 
URLs (OFBIZ-13092)
474e806816 is described below

commit 474e806816e4a1d0c16667972e5044ce2ded9d13
Author: Jacques Le Roux <jacques.le.r...@les7arts.com>
AuthorDate: Tue May 21 05:08:34 2024 +0200

    Improved: Prevent special encoded characters sequences in URLs (OFBIZ-13092)
    
    Removes now redundant calls to URI::normalize in ControlFilter and 
LoginWorker
    classes
    Also removes few trailing blanks when needed (automatically done by Eclipse)
---
 .../apache/ofbiz/webapp/control/ControlFilter.java |  7 ----
 .../apache/ofbiz/webapp/control/LoginWorker.java   | 39 +++++++++-------------
 2 files changed, 15 insertions(+), 31 deletions(-)

diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ControlFilter.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ControlFilter.java
index 7c110155dd..541cf7e91a 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ControlFilter.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ControlFilter.java
@@ -147,13 +147,6 @@ public class ControlFilter implements Filter {
                 throw new RuntimeException(e);
             }
 
-            // normalize to remove ".." special name usage to bypass webapp 
filter
-            try {
-                requestUri = new URI(requestUri).normalize().toString();
-            } catch (URISyntaxException e) {
-                throw new RuntimeException(e);
-            }
-
             int offset = requestUri.indexOf("/", 1);
             if (offset == -1) {
                 offset = requestUri.length();
diff --git 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
index 23209ff375..c9cf786eeb 100644
--- 
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
+++ 
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
@@ -21,8 +21,6 @@ package org.apache.ofbiz.webapp.control;
 import static org.apache.ofbiz.base.util.UtilGenerics.checkMap;
 
 import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.security.cert.X509Certificate;
 import java.sql.Timestamp;
 import java.util.ArrayList;
@@ -392,12 +390,12 @@ public class LoginWorker {
      */
     public static String login(HttpServletRequest request, HttpServletResponse 
response) {
         HttpSession session = request.getSession();
-        
-        // Prevent session fixation by making Tomcat generate a new jsessionId 
(ultimately put in cookie). 
-        if (!session.isNew()) {  // Only do when really signing in. 
+
+        // Prevent session fixation by making Tomcat generate a new jsessionId 
(ultimately put in cookie).
+        if (!session.isNew()) {  // Only do when really signing in.
             request.changeSessionId();
         }
-        
+
         Delegator delegator = (Delegator) request.getAttribute("delegator");
         String username = request.getParameter("USERNAME");
         String password = request.getParameter("PASSWORD");
@@ -411,7 +409,7 @@ public class LoginWorker {
         } catch (EntityCryptoException e1) {
             Debug.logError(e1.getMessage(), module);
         }
-        
+
         if(entityDeCrypto != null && "true".equals(forgotPwdFlag)) {
             try {
                 Object decryptedPwd = entityDeCrypto.decrypt(keyValue, 
ModelField.EncryptMethod.TRUE, password);
@@ -819,7 +817,7 @@ public class LoginWorker {
         autoLoginSet(request, response);
 
         return autoLoginCheck(request, response);
-        
+
     }
 
     public static void doBasicLogin(GenericValue userLogin, HttpServletRequest 
request) {
@@ -874,7 +872,7 @@ public class LoginWorker {
         GenericValue userLogin = (GenericValue) 
request.getSession().getAttribute("userLogin");
 
         doBasicLogout(userLogin, request, response);
-        
+
         if (request.getAttribute("_AUTO_LOGIN_LOGOUT_") == null) {
             return autoLoginCheck(request, response);
         }
@@ -950,8 +948,8 @@ public class LoginWorker {
         ServletContext context = request.getServletContext();
         String applicationName = UtilHttp.getApplicationName(request);
         WebappInfo webappInfo = ComponentConfig.getWebappInfo((String) 
context.getAttribute("_serverId"), applicationName);
-                
-        if (userLogin != null && 
+
+        if (userLogin != null &&
                 ((webappInfo != null && webappInfo.isAutologinCookieUsed())
                 || webappInfo == null)) { // When using an empty mountpoint, 
ie using root as mountpoint. Beware: works only for 1 webapp!
             Cookie autoLoginCookie = new 
Cookie(getAutoLoginCookieName(request), userLogin.getString("userLoginId"));
@@ -974,7 +972,7 @@ public class LoginWorker {
         HttpSession session = request.getSession();
         GenericValue userLogin = (GenericValue) 
session.getAttribute("userLogin");
         String applicationName = UtilHttp.getApplicationName(request);
-        
+
         if (userLogin != null) {
             Cookie securedLoginIdCookie = new 
Cookie(getSecuredLoginIdCookieName(request), 
userLogin.getString("userLoginId"));
             securedLoginIdCookie.setMaxAge(-1);
@@ -993,7 +991,7 @@ public class LoginWorker {
     protected static String getSecuredLoginIdCookieName(HttpServletRequest 
request) {
         return UtilHttp.getApplicationName(request) + ".securedLoginId";
     }
-    
+
     public static String getAutoUserLoginId(HttpServletRequest request) {
         String autoUserLoginId = null;
         Cookie[] cookies = request.getCookies();
@@ -1010,7 +1008,7 @@ public class LoginWorker {
         }
         return autoUserLoginId;
     }
-    
+
     public static String getSecuredUserLoginId(HttpServletRequest request) {
         String securedUserLoginId = null;
         Cookie[] cookies = request.getCookies();
@@ -1033,7 +1031,7 @@ public class LoginWorker {
     public static String autoLoginCheck(HttpServletRequest request, 
HttpServletResponse response) {
         Delegator delegator = (Delegator) request.getAttribute("delegator");
         HttpSession session = request.getSession();
-        
+
         GenericValue autoUserLogin = (GenericValue) 
session.getAttribute("autoUserLogin");
         if (autoUserLogin != null){
             return "success";
@@ -1096,7 +1094,7 @@ public class LoginWorker {
         }
         return "success";
     }
-    
+
     public static boolean isUserLoggedIn(HttpServletRequest request) {
         HttpSession session = request.getSession();
         GenericValue currentUserLogin = (GenericValue) 
session.getAttribute("userLogin");
@@ -1202,7 +1200,7 @@ public class LoginWorker {
 
         return "success";
     }
-    
+
     // preprocessor method to login a user w/ client certificate see 
security.properties to configure the pattern of CN
     public static String check509CertLogin(HttpServletRequest request, 
HttpServletResponse response) {
         Delegator delegator = (Delegator) request.getAttribute("delegator");
@@ -1366,13 +1364,6 @@ public class LoginWorker {
             if (UtilValidate.isEmpty(contextPath)) {
                 contextPath = "/";
             }
-
-            try {
-                contextPath = new URI(contextPath).normalize().toString();
-            } catch (URISyntaxException e) {
-                throw new RuntimeException(e);
-            }
-
             ComponentConfig.WebappInfo info = 
ComponentConfig.getWebAppInfo(serverId, contextPath);
             if (info != null) {
                 return hasApplicationPermission(info, security, userLogin);

Reply via email to