Skip to content

Commit 48aaec6

Browse files
committed
CLAP-372 Feat: javascript 스키마 검증 로직 추가
<footer> - 관련: #475
1 parent e18a626 commit 48aaec6

File tree

2 files changed

+18
-28
lines changed

2 files changed

+18
-28
lines changed

src/main/java/clap/server/adapter/inbound/xss/XssRequestWrapper.java

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.jsoup.safety.Safelist;
88

99
import java.util.Arrays;
10-
import java.util.Enumeration;
1110
import java.util.Optional;
1211

1312
@Slf4j
@@ -29,44 +28,29 @@ public String[] getParameterValues(String parameter) {
2928
@Override
3029
public String getParameter(String parameter) {
3130
String value = super.getParameter(parameter);
32-
log.info("Original parameter [{}]: {}", parameter, value);
33-
3431
String sanitizedValue = Optional.ofNullable(value)
3532
.map(this::sanitize)
3633
.orElse(null);
37-
34+
log.info("Original parameter [{}]: {}", parameter, value);
3835
log.info("Sanitized parameter [{}]: {}", parameter, sanitizedValue);
3936
return sanitizedValue;
4037
}
4138

4239
@Override
4340
public String getHeader(String name) {
44-
String originalValue = super.getHeader(name);
45-
String sanitizedValue = sanitize(originalValue);
46-
log.debug("Original header [{}]: {}", name, originalValue);
47-
log.debug("Sanitized header [{}]: {}", name, sanitizedValue);
48-
return sanitizedValue;
49-
}
50-
51-
@Override
52-
public Enumeration<String> getHeaderNames() {
53-
return new Enumeration<String>() {
54-
private Enumeration<String> enum1 = XssRequestWrapper.super.getHeaderNames();
55-
@Override
56-
public boolean hasMoreElements() {
57-
return enum1.hasMoreElements();
58-
}
59-
@Override
60-
public String nextElement() {
61-
return sanitize(enum1.nextElement());
62-
}
63-
};
41+
return Optional.ofNullable(super.getHeader(name))
42+
.map(this::sanitize)
43+
.orElse(null);
6444
}
6545

6646

67-
private String sanitize(String value) {
68-
return Optional.ofNullable(value)
69-
.map(str -> Jsoup.clean(str, Safelist.basic()))
70-
.orElse(null);
47+
public String sanitize(String value) {
48+
if (value == null) {
49+
return null;
50+
}
51+
if (value.toLowerCase().startsWith("javascript:")) {
52+
return "";
53+
}
54+
return Jsoup.clean(value, Safelist.basic());
7155
}
7256
}

src/main/java/clap/server/config/jackson/JacksonConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ public static class JsonHtmlXssDeserializer extends JsonDeserializer<String> {
3131
@Override
3232
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
3333
String value = p.getText();
34+
if (value == null) {
35+
return null;
36+
}
37+
if (value.toLowerCase().startsWith("javascript:")) {
38+
return "";
39+
}
3440
return Jsoup.clean(value, Safelist.basic());
3541
}
3642
}

0 commit comments

Comments
 (0)