Author: rgielen Date: Sun Feb 24 22:26:12 2008 New Revision: 630742 URL: http://svn.apache.org/viewvc?rev=630742&view=rev Log: WW-2427: Applied Don Brown's fix for escaping double quote in href to 2.0.x tree
Added: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/href-2.txt Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/UIBean.java struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java?rev=630742&r1=630741&r2=630742&view=diff ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java (original) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java Sun Feb 24 22:26:12 2008 @@ -60,7 +60,7 @@ super.evaluateExtraParams(); if (href != null) - addParameter("href", findString(href)); + addParameter("href", ensureAttributeSafelyNotEscaped(findString(href))); if (errorText != null) addParameter("errorText", findString(errorText)); if (loadingText != null) Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/UIBean.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/UIBean.java?rev=630742&r1=630741&r2=630742&view=diff ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/UIBean.java (original) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/UIBean.java Sun Feb 24 22:26:12 2008 @@ -790,6 +790,20 @@ } } + /** + * Ensures an unescaped attribute value cannot be vulnerable to XSS attacks + * + * @param val The value to check + * @return The escaped value + */ + protected String ensureAttributeSafelyNotEscaped(String val) { + if (val != null) { + return val.replaceAll("\"", """); + } else { + return ""; + } + } + protected void evaluateExtraParams() { } Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java?rev=630742&r1=630741&r2=630742&view=diff ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java (original) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/views/jsp/ui/AnchorTest.java Sun Feb 24 22:26:12 2008 @@ -56,4 +56,18 @@ verify(AnchorTest.class.getResource("href-1.txt")); } + public void testSimpleBadQuote() throws Exception { + TestAction testAction = (TestAction) action; + testAction.setFoo("bar"); + + AnchorTag tag = new AnchorTag(); + tag.setPageContext(pageContext); + + tag.setId("mylink"); + tag.setHref("a\""); + tag.doStartTag(); + tag.doEndTag(); + + verify(AnchorTest.class.getResource("href-2.txt")); + } } Added: struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/href-2.txt URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/href-2.txt?rev=630742&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/href-2.txt (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/resources/org/apache/struts2/views/jsp/ui/href-2.txt Sun Feb 24 22:26:12 2008 @@ -0,0 +1,4 @@ +<a + id="mylink" + href="a""> +</a> \ No newline at end of file