From 0002cf457d470b80347848d3329dfb3b11761c86 Mon Sep 17 00:00:00 2001 From: wol <1293433164@qq.com> Date: Tue, 12 Aug 2025 23:30:14 +0800 Subject: [PATCH] 1 --- .../json/xss/JsonHtmlXssTrimSerializer.java | 34 ++++++++++++++ .../config/MybatisPlusConfiguration.java | 2 +- .../common/web/config/FilterConfig.java | 47 +++++++++++++++++++ .../common/web}/filter/TraceIdFilter.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + 5 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 agileboot-common/wol-common-json/src/main/java/com/agileboot/common/json/xss/JsonHtmlXssTrimSerializer.java create mode 100644 agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/config/FilterConfig.java rename {agileboot-infrastructure/src/main/java/com/agileboot/infrastructure => agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web}/filter/TraceIdFilter.java (97%) diff --git a/agileboot-common/wol-common-json/src/main/java/com/agileboot/common/json/xss/JsonHtmlXssTrimSerializer.java b/agileboot-common/wol-common-json/src/main/java/com/agileboot/common/json/xss/JsonHtmlXssTrimSerializer.java new file mode 100644 index 0000000..4f6a07f --- /dev/null +++ b/agileboot-common/wol-common-json/src/main/java/com/agileboot/common/json/xss/JsonHtmlXssTrimSerializer.java @@ -0,0 +1,34 @@ +package com.agileboot.common.json.xss; + +import cn.hutool.http.HtmlUtil; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import java.io.IOException; + +/** + * 直接将html标签去掉 + * @author valarchie + */ +public class JsonHtmlXssTrimSerializer extends JsonDeserializer { + + public JsonHtmlXssTrimSerializer() { + super(); + } + + @Override + public String deserialize(JsonParser p, DeserializationContext context) throws IOException { + String value = p.getValueAsString(); + if( value != null) { + // 去除掉html标签 如果想要转义的话 可使用 HtmlUtil.escape() + return HtmlUtil.cleanHtmlTag(value); + } + return null; + } + + @Override + public Class handledType() { + return String.class; + } + +} diff --git a/agileboot-common/wol-common-mybatis/src/main/java/com/agileboot/common/mybatis/config/MybatisPlusConfiguration.java b/agileboot-common/wol-common-mybatis/src/main/java/com/agileboot/common/mybatis/config/MybatisPlusConfiguration.java index d0ccf6d..5d80ffa 100644 --- a/agileboot-common/wol-common-mybatis/src/main/java/com/agileboot/common/mybatis/config/MybatisPlusConfiguration.java +++ b/agileboot-common/wol-common-mybatis/src/main/java/com/agileboot/common/mybatis/config/MybatisPlusConfiguration.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.PropertySource; @AutoConfiguration -@MapperScan("${mybatis-plus.mapperPackage}") +@MapperScan(value = "${mybatis-plus.mapperPackage}", markerInterface = com.baomidou.mybatisplus.core.mapper.BaseMapper.class) @PropertySource(value = "classpath:common-mybatis.yml", factory = YmlPropertySourceFactory.class) public class MybatisPlusConfiguration { diff --git a/agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/config/FilterConfig.java b/agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/config/FilterConfig.java new file mode 100644 index 0000000..91ea18c --- /dev/null +++ b/agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/config/FilterConfig.java @@ -0,0 +1,47 @@ +package com.agileboot.common.web.config; + +import com.agileboot.common.web.filter.TraceIdFilter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.core.Ordered; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +@AutoConfiguration +public class FilterConfig { + + @Value("${agileboot.traceRequestIdKey:WOl-RequestId}") + private String requestIdKey; + + @Bean + public FilterRegistrationBean traceIdFilterRegistrationBean() { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); + registration.setFilter(new TraceIdFilter(requestIdKey)); + registration.addUrlPatterns("/*"); + registration.setName("traceIdFilter"); + registration.setOrder(Ordered.HIGHEST_PRECEDENCE); + return registration; + } + + @Bean + public CorsFilter corsFilter() { + CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); + // 设置访问源地址 + config.addAllowedOriginPattern("*"); + // 设置访问源请求头 + config.addAllowedHeader("*"); + // 设置访问源请求方法 + config.addAllowedMethod("*"); + // 有效期 1800秒 + config.setMaxAge(1800L); + // 添加映射路径,拦截一切请求 + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", config); + // 返回新的CorsFilter + return new CorsFilter(source); + } +} diff --git a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/filter/TraceIdFilter.java b/agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/filter/TraceIdFilter.java similarity index 97% rename from agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/filter/TraceIdFilter.java rename to agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/filter/TraceIdFilter.java index d50751e..f0f8df9 100644 --- a/agileboot-infrastructure/src/main/java/com/agileboot/infrastructure/filter/TraceIdFilter.java +++ b/agileboot-common/wol-common-web/src/main/java/com/agileboot/common/web/filter/TraceIdFilter.java @@ -1,4 +1,4 @@ -package com.agileboot.infrastructure.filter; +package com.agileboot.common.web.filter; import cn.hutool.core.util.StrUtil; import java.io.IOException; diff --git a/agileboot-common/wol-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/agileboot-common/wol-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 160b701..52e766e 100644 --- a/agileboot-common/wol-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/agileboot-common/wol-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,2 @@ com.agileboot.common.web.config.ResourcesConfig +com.agileboot.common.web.config.FilterConfig \ No newline at end of file