Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ dependencies {

// Jsoup
implementation 'org.jsoup:jsoup:1.17.1'

// Jackson 추가
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
}

tasks.named('test') {
Expand Down
17 changes: 13 additions & 4 deletions src/main/java/clap/server/config/jackson/JacksonConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.safety.Safelist;
Expand All @@ -13,20 +15,27 @@

import java.io.IOException;

// XSS 방지를 위한 Jackson 설정

@Slf4j
@Configuration
public class JacksonConfig {

@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addDeserializer(String.class, new JsonHtmlXssDeserializer());
mapper.registerModule(module);

mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

// XSS 방지를 위한 커스텀 모듈 추가
SimpleModule xssModule = new SimpleModule();
xssModule.addDeserializer(String.class, new JsonHtmlXssDeserializer());
mapper.registerModule(xssModule);

return mapper;
}

// XSS 방지를 위한 Jackson 설정
public static class JsonHtmlXssDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
Expand Down
Loading