From 2dcf524cd6d0c3778a2ccdb3da637e4db42ee42d Mon Sep 17 00:00:00 2001 From: Rinjae Date: Wed, 24 Jun 2026 14:46:44 +0900 Subject: [PATCH] =?UTF-8?q?XSS=20=EB=AC=B8=EC=9E=90=20=EB=B3=80=ED=99=98?= =?UTF-8?q?=20=EC=A0=9C=EC=99=B8=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20subjectTemplate,=20smsTemplate=20?= =?UTF-8?q?=EB=93=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/eactive/eai/rms/common/filter/RequestWrapper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/eactive/eai/rms/common/filter/RequestWrapper.java b/src/main/java/com/eactive/eai/rms/common/filter/RequestWrapper.java index 32d87ce..1fca3a8 100644 --- a/src/main/java/com/eactive/eai/rms/common/filter/RequestWrapper.java +++ b/src/main/java/com/eactive/eai/rms/common/filter/RequestWrapper.java @@ -53,9 +53,11 @@ class RequestWrapper extends HttpServletRequestWrapper { "^data:image/.*", Pattern.CASE_INSENSITIVE); - // XSS 문자 변환을 건너뛸 파라미터 목록 (리치 텍스트 에디터 콘텐츠 등) - // XSS 패턴 필터링은 적용하지만 <, > 등으로 변환하지 않음 - private static final String[] SKIP_CHAR_CONVERT_PARAMS = {"contents", "content", "description"}; + // XSS 문자 변환을 건너뛸 파라미터 목록 (리치 텍스트 에디터 콘텐츠, 메시지 템플릿 본문 등) + // XSS 패턴 필터링은 적용하지만 <, >, & 등으로 변환하지 않음 + // (메시지 템플릿은 SMS/메신저 평문으로 전송되므로 '&'가 '&'로 깨지면 안 됨) + private static final String[] SKIP_CHAR_CONVERT_PARAMS = {"contents", "content", "description", + "subjectTemplate", "smsTemplate", "emailTemplate", "messengerTemplate"}; // 현재 처리 중인 파라미터명 (cleanXSS에서 문자 변환 여부 결정에 사용) private ThreadLocal currentParameter = new ThreadLocal<>();