diff --git a/core/src/main/java/org/springframework/security/util/TextUtils.java b/core/src/main/java/org/springframework/security/util/TextUtils.java new file mode 100644 index 0000000000..f547e9c7bb --- /dev/null +++ b/core/src/main/java/org/springframework/security/util/TextUtils.java @@ -0,0 +1,33 @@ +package org.springframework.security.util; + +/** + * Utilities for working with Strings and text. + * + * @author Luke Taylor + * @version $Id$ + */ +public abstract class TextUtils { + + public static String escapeEntities(String s) { + StringBuffer sb = new StringBuffer(); + + for (int i=0; i < s.length(); i++) { + char c = s.charAt(i); + + if(c == '<') { + sb.append("<"); + } else if (c == '>') { + sb.append(">"); + } else if (c == '"') { + sb.append("""); + } else if (c == '\'') { + sb.append("'"); + } else { + sb.append(c); + } + } + + return sb.toString(); + } + +} diff --git a/core/src/test/java/org/springframework/security/util/TextUtilsTests.java b/core/src/test/java/org/springframework/security/util/TextUtilsTests.java new file mode 100644 index 0000000000..7b1c454e1f --- /dev/null +++ b/core/src/test/java/org/springframework/security/util/TextUtilsTests.java @@ -0,0 +1,14 @@ +package org.springframework.security.util; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class TextUtilsTests { + + @Test + public void charactersAreEscapedCorrectly() { + assertEquals("a<script>"'", TextUtils.escapeEntities("a