diff --git a/spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java b/spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java index 6ad75260336..0a01be51384 100644 --- a/spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java +++ b/spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java @@ -27,6 +27,7 @@ package org.springframework.web.util; * @author Juergen Hoeller * @author Rob Harrop * @author Rossen Stoyanchev + * @author Sebastien Deleuze * @since 1.1.1 */ public abstract class JavaScriptUtils { @@ -89,6 +90,12 @@ public abstract class JavaScriptUtils { else if (c == '\u2029') { filtered.append("\\u2029"); } + else if (c == '`') { + filtered.append("\\u0060"); + } + else if (c == '$') { + filtered.append("\\u0024"); + } else { filtered.append(c); } diff --git a/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java b/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java index b91f1b825b3..b2c49163491 100644 --- a/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java @@ -62,4 +62,14 @@ class JavaScriptUtilsTests { assertThat(JavaScriptUtils.javaScriptEscape("<>")).isEqualTo("\\u003C\\u003E"); } + @Test + void escapeBacktick() { + assertThat(JavaScriptUtils.javaScriptEscape("`")).isEqualTo("\\u0060"); + } + + @Test + void escapeDollar() { + assertThat(JavaScriptUtils.javaScriptEscape("$")).isEqualTo("\\u0024"); + } + }