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<>();