|
@@ -1,62 +1,62 @@
|
|
|
-package com.style24.core.support.text;
|
|
|
|
|
-
|
|
|
|
|
-import java.util.Collections;
|
|
|
|
|
-import java.util.HashMap;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
-
|
|
|
|
|
-import org.apache.commons.text.translate.AggregateTranslator;
|
|
|
|
|
-import org.apache.commons.text.translate.CharSequenceTranslator;
|
|
|
|
|
-import org.apache.commons.text.translate.EntityArrays;
|
|
|
|
|
-import org.apache.commons.text.translate.LookupTranslator;
|
|
|
|
|
-
|
|
|
|
|
-import com.fasterxml.jackson.core.SerializableString;
|
|
|
|
|
-import com.fasterxml.jackson.core.io.CharacterEscapes;
|
|
|
|
|
-import com.fasterxml.jackson.core.io.SerializedString;
|
|
|
|
|
-
|
|
|
|
|
-@SuppressWarnings("serial")
|
|
|
|
|
-public class TscHtmlCharacterEscapes extends CharacterEscapes {
|
|
|
|
|
-
|
|
|
|
|
- private final int[] asciiEscapes;
|
|
|
|
|
-
|
|
|
|
|
- private final CharSequenceTranslator translator;
|
|
|
|
|
-
|
|
|
|
|
- public TscHtmlCharacterEscapes() {
|
|
|
|
|
- // XSS 방지 처리할 특수 문자 지정
|
|
|
|
|
- asciiEscapes = CharacterEscapes.standardAsciiEscapesForJSON();
|
|
|
|
|
- asciiEscapes['<'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
- asciiEscapes['>'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
- asciiEscapes['&'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
- asciiEscapes['\"'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
-// asciiEscapes['('] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
-// asciiEscapes[')'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
-// asciiEscapes['#'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
- asciiEscapes['\''] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
-
|
|
|
|
|
- Map<CharSequence, CharSequence> lookupMap = new HashMap<>();
|
|
|
|
|
- lookupMap.put("(", "(");
|
|
|
|
|
- lookupMap.put(")", ")");
|
|
|
|
|
- lookupMap.put("#", "#");
|
|
|
|
|
- lookupMap.put("\\", "'");
|
|
|
|
|
- Map<CharSequence, CharSequence> CUSTOM_ESCAPE = Collections.unmodifiableMap(lookupMap);
|
|
|
|
|
-
|
|
|
|
|
- // XSS 방지 처리 특수문자 인코딩 값 지정
|
|
|
|
|
- this.translator = new AggregateTranslator(
|
|
|
|
|
- new LookupTranslator(EntityArrays.BASIC_ESCAPE), // <, >, &, "는 여기에 포함
|
|
|
|
|
- new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE),
|
|
|
|
|
- new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE),
|
|
|
|
|
- new LookupTranslator(CUSTOM_ESCAPE));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public int[] getEscapeCodesForAscii() {
|
|
|
|
|
- return asciiEscapes;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public SerializableString getEscapeSequence(int ch) {
|
|
|
|
|
- return new SerializedString(translator.translate(Character.toString((char)ch)));
|
|
|
|
|
- // 커스터마이징이 필요 없다면 아래걸 그대로 사용
|
|
|
|
|
-// return new SerializedString(StringEscapeUtils.escapeHtml4(Character.toString((char)ch)));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|
|
|
|
|
+//package com.style24.core.support.text;
|
|
|
|
|
+//
|
|
|
|
|
+//import java.util.Collections;
|
|
|
|
|
+//import java.util.HashMap;
|
|
|
|
|
+//import java.util.Map;
|
|
|
|
|
+//
|
|
|
|
|
+//import org.apache.commons.text.translate.AggregateTranslator;
|
|
|
|
|
+//import org.apache.commons.text.translate.CharSequenceTranslator;
|
|
|
|
|
+//import org.apache.commons.text.translate.EntityArrays;
|
|
|
|
|
+//import org.apache.commons.text.translate.LookupTranslator;
|
|
|
|
|
+//
|
|
|
|
|
+//import com.fasterxml.jackson.core.SerializableString;
|
|
|
|
|
+//import com.fasterxml.jackson.core.io.CharacterEscapes;
|
|
|
|
|
+//import com.fasterxml.jackson.core.io.SerializedString;
|
|
|
|
|
+//
|
|
|
|
|
+//@SuppressWarnings("serial")
|
|
|
|
|
+//public class TscHtmlCharacterEscapes extends CharacterEscapes {
|
|
|
|
|
+//
|
|
|
|
|
+// private final int[] asciiEscapes;
|
|
|
|
|
+//
|
|
|
|
|
+// private final CharSequenceTranslator translator;
|
|
|
|
|
+//
|
|
|
|
|
+// public TscHtmlCharacterEscapes() {
|
|
|
|
|
+// // XSS 방지 처리할 특수 문자 지정
|
|
|
|
|
+// asciiEscapes = CharacterEscapes.standardAsciiEscapesForJSON();
|
|
|
|
|
+// asciiEscapes['<'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+// asciiEscapes['>'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+// asciiEscapes['&'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+// asciiEscapes['\"'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+//// asciiEscapes['('] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+//// asciiEscapes[')'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+//// asciiEscapes['#'] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+// asciiEscapes['\''] = CharacterEscapes.ESCAPE_CUSTOM;
|
|
|
|
|
+//
|
|
|
|
|
+// Map<CharSequence, CharSequence> lookupMap = new HashMap<>();
|
|
|
|
|
+// lookupMap.put("(", "(");
|
|
|
|
|
+// lookupMap.put(")", ")");
|
|
|
|
|
+// lookupMap.put("#", "#");
|
|
|
|
|
+// lookupMap.put("\\", "'");
|
|
|
|
|
+// Map<CharSequence, CharSequence> CUSTOM_ESCAPE = Collections.unmodifiableMap(lookupMap);
|
|
|
|
|
+//
|
|
|
|
|
+// // XSS 방지 처리 특수문자 인코딩 값 지정
|
|
|
|
|
+// this.translator = new AggregateTranslator(
|
|
|
|
|
+// new LookupTranslator(EntityArrays.BASIC_ESCAPE), // <, >, &, "는 여기에 포함
|
|
|
|
|
+// new LookupTranslator(EntityArrays.ISO8859_1_ESCAPE),
|
|
|
|
|
+// new LookupTranslator(EntityArrays.HTML40_EXTENDED_ESCAPE),
|
|
|
|
|
+// new LookupTranslator(CUSTOM_ESCAPE));
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// @Override
|
|
|
|
|
+// public int[] getEscapeCodesForAscii() {
|
|
|
|
|
+// return asciiEscapes;
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// @Override
|
|
|
|
|
+// public SerializableString getEscapeSequence(int ch) {
|
|
|
|
|
+// return new SerializedString(translator.translate(Character.toString((char)ch)));
|
|
|
|
|
+// // 커스터마이징이 필요 없다면 아래걸 그대로 사용
|
|
|
|
|
+//// return new SerializedString(StringEscapeUtils.escapeHtml4(Character.toString((char)ch)));
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+//}
|