You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by gd...@apache.org on 2010/04/20 13:38:02 UTC

svn commit: r935878 - in /axis/axis2/java/core/trunk/modules: kernel/src/org/apache/axis2/util/ webapp/src/main/webapp/axis2-web/

Author: gdaniels
Date: Tue Apr 20 11:38:02 2010
New Revision: 935878

URL: http://svn.apache.org/viewvc?rev=935878&view=rev
Log:
Protect against potential XSS by sanitizing outputted user data.

Modified:
    axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/Utils.java
    axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/EngageToServiceGroup.jsp
    axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingglobally.jsp
    axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoanoperation.jsp
    axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoaservice.jsp
    axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/listGroupService.jsp

Modified: axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/Utils.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/Utils.java?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
+++ axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/util/Utils.java Tue Apr 20 11:38:02 2010
@@ -373,6 +373,17 @@ public class Utils {
         return moduleName;
     }
 
+    private static final String ILLEGAL_CHARACTERS = "/\n\r\t\0\f`?*\\<>|\":";
+    public static boolean isValidModuleName(String moduleName) {
+        for (int i = 0; i < moduleName.length(); i++) {
+            char c = moduleName.charAt(i);
+            if ((c > 127) || (ILLEGAL_CHARACTERS.indexOf(c) >= 0)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     /**
      * - if he trying to engage the same module then method will returen false
      * - else it will return true
@@ -653,6 +664,11 @@ public class Utils {
         int index = uri.indexOf(':');
         return index > 0 ? uri.substring(0, index) : null;
     }
+
+    public static String sanitizeWebOutput(String text) {
+        text = text.replaceAll("<", "&lt;");
+        return text;
+    }
     
     /**
      * Create a service object for a given service. The method first looks for

Modified: axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/EngageToServiceGroup.jsp
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/EngageToServiceGroup.jsp?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/EngageToServiceGroup.jsp (original)
+++ axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/EngageToServiceGroup.jsp Tue Apr 20 11:38:02 2010
@@ -23,6 +23,7 @@
                                                                              java.util.Collection" %>
 <%@ page import="java.util.HashMap"%>
 <%@ page import="java.util.Iterator"%>
+<%@ page import="org.apache.axis2.util.Utils" %>
 <jsp:include page="include/adminheader.jsp"></jsp:include>
 <%
     String status = (String)request.getSession().getAttribute(Constants.ENGAGE_STATUS);
@@ -124,7 +125,7 @@
                           style="display:none"
                         <%
                             } %>
-                        ><%=status%></textarea>
+                        ><%=Utils.sanitizeWebOutput(status)%></textarea>
             </td>
         </tr>
     </table>

Modified: axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingglobally.jsp
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingglobally.jsp?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingglobally.jsp (original)
+++ axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingglobally.jsp Tue Apr 20 11:38:02 2010
@@ -22,6 +22,7 @@
                  java.util.Collection,
                  java.util.HashMap,
                  java.util.Iterator" %>
+<%@ page import="org.apache.axis2.util.Utils" %>
 <html>
 <jsp:include page="include/adminheader.jsp"/>
 <%
@@ -40,13 +41,15 @@
             <td width="75%" align="left">
                 <select name="modules">
                     <%
-                        HashMap moduels = (HashMap) request.getSession().getAttribute(Constants.MODULE_MAP);
+                        HashMap modules = (HashMap) request.getSession().getAttribute(Constants.MODULE_MAP);
                         request.getSession().setAttribute(Constants.MODULE_MAP,null);
-                        Collection moduleCol = moduels.values();
+                        Collection moduleCol = modules.values();
                         for (Iterator iterator = moduleCol.iterator(); iterator.hasNext();) {
                             AxisModule axisOperation = (AxisModule) iterator.next();
                             String modulename = axisOperation.getName();
-                    %> <option align="left" value="<%=modulename%>"><%=modulename%></option>
+                    %>
+                    <option align="left" value="<%=modulename%>"><%=modulename%>
+                    </option>
                     <%
                         }
                     %>
@@ -63,7 +66,7 @@
 <%
     if (status != null) {
 %>
-<p><font color="blue"><%=status%></font></p>
+<p style="color:blue"><%=Utils.sanitizeWebOutput(status)%></p>
 <%
     } %>
 <jsp:include page="include/adminfooter.inc"/>

Modified: axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoanoperation.jsp
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoanoperation.jsp?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoanoperation.jsp (original)
+++ axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoanoperation.jsp Tue Apr 20 11:38:02 2010
@@ -20,6 +20,7 @@
 <%@ page contentType="text/html; charset=iso-8859-1" language="java" import="org.apache.axis2.Constants,
                                                                              org.apache.axis2.description.AxisModule,
                                                                              org.apache.axis2.description.AxisOperation,
+                                                                             org.apache.axis2.util.Utils,
                                                                              java.util.Collection,
                                                                              java.util.HashMap,
                                                                              java.util.Iterator"%>
@@ -117,7 +118,7 @@
                             style="display:none"
                             <%
                         } %>
-                    ><%=status%></textarea>
+                    ><%=Utils.sanitizeWebOutput(status)%></textarea>
               </td>
            </tr>
       </table>

Modified: axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoaservice.jsp
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoaservice.jsp?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoaservice.jsp (original)
+++ axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/engagingtoaservice.jsp Tue Apr 20 11:38:02 2010
@@ -24,6 +24,7 @@
                                                                              java.util.HashMap,
                                                                              java.util.Iterator"
          %>
+<%@ page import="org.apache.axis2.util.Utils" %>
 <jsp:include page="include/adminheader.jsp"></jsp:include>
 <%
     String status = (String) request.getSession().getAttribute(Constants.ENGAGE_STATUS);
@@ -133,7 +134,7 @@
                           style="display:none"
                         <%
                             } %>
-                        ><%=status%>
+                        ><%=Utils.sanitizeWebOutput(status)%>
                 </textarea>
             </td>
         </tr>

Modified: axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/listGroupService.jsp
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/listGroupService.jsp?rev=935878&r1=935877&r2=935878&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/listGroupService.jsp (original)
+++ axis/axis2/java/core/trunk/modules/webapp/src/main/webapp/axis2-web/listGroupService.jsp Tue Apr 20 11:38:02 2010
@@ -36,23 +36,22 @@
 <jsp:include page="include/adminheader.jsp"/>
 <h1>Available services</h1>
 <%
-  String prifix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) +"/";
+  String prefix = request.getAttribute("frontendHostUrl") + (String)request.getSession().getAttribute(Constants.SERVICE_PATH) +"/";
 %>
 <%
-  HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);
-  request.getSession().setAttribute(Constants.SERVICE_MAP,null);
-  String servicName = request.getParameter("serviceName");
-  AxisService axisService = (AxisService) serviceMap.get(servicName);
-  if (axisService != null) {
-    Iterator operations;
-    String serviceName;
-    operations = axisService.getOperations();
-    serviceName = axisService.getName();
+    HashMap serviceMap = (HashMap) request.getSession().getAttribute(Constants.SERVICE_MAP);
+    request.getSession().setAttribute(Constants.SERVICE_MAP,null);
+    AxisService axisService = (AxisService) serviceMap.get(request.getParameter("serviceName"));
+    if (axisService != null) {
+        Iterator operations;
+        String serviceName;
+        operations = axisService.getOperations();
+        serviceName = axisService.getName();
 %><hr>
 
-<h2><font color="blue"><a href="<%=prifix + axisService.getName()%>?wsdl"><%=serviceName%></a>
+<h2><font color="blue"><a href="<%=prefix + axisService.getName()%>?wsdl"><%=serviceName%></a>
 </font></h2>
-<font color="blue">Service EPR :</font><font color="black"><%=prifix + axisService.getName()%></font>
+<font color="blue">Service EPR :</font><font color="black"><%=prefix + axisService.getName()%></font>
 <h4>Service Description : <font color="black"><%=axisService.getServiceDescription()%></font></h4>
 <i><font color="blue">Service Status : <%=axisService.isActive() ? "Active" : "InActive"%></font></i><br/>
 <%