From a1826b725c29fbb175fa7b4fc005aa3d78c32015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Sun, 3 May 2026 11:26:50 +0200 Subject: [PATCH] Refine JavaScriptUtils#javaScriptEscape Closes gh-36795 --- .../org/springframework/web/util/JavaScriptUtils.java | 7 +++++++ .../springframework/web/util/JavaScriptUtilsTests.java | 10 ++++++++++ 2 files changed, 17 insertions(+) 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"); + } + }