zoukankan      html  css  js  c++  java
  • springboot防止xss攻击

    pom.xml:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>

    java代码:

    import java.io.IOException;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
    import org.springframework.web.util.HtmlUtils;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializerProvider;
    import com.fasterxml.jackson.databind.module.SimpleModule;
    
    /**
     * XSS防护配置<br/>
     *
     */
    @Configuration
    public class XssConfig {
        /**
         * XSS防护<br/>
         * 
         * @param builder
         * @return
         */
        @Bean
        @Primary
        public ObjectMapper xssObjectMapper(Jackson2ObjectMapperBuilder builder) {
            // 解析器
            ObjectMapper objectMapper = builder.createXmlMapper(false).build();
            // 注册xss解析器
            SimpleModule xssModule = new SimpleModule("XssStringJsonSerializer");
            xssModule.addSerializer(new XssStringJsonSerializer());
            objectMapper.registerModule(xssModule);
            // 返回
            return objectMapper;
        }
    }
    
    
    class XssStringJsonSerializer extends JsonSerializer<String> {
    
        @Override
        public Class<String> handledType() {
            return String.class;
        }
    
        @SuppressWarnings("unused")
        @Override
        public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
                throws IOException {
            if (value != null) {
                String encodedValue = HtmlUtils.htmlEscape(value);
                jsonGenerator.writeString(value);
            }
        }
    }
  • 相关阅读:
    【转】如何删除一个repository(仓库)
    【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
    【转】android 开发 命名规范
    【转】精简深拷贝ArrayList实例
    【转】关于Adapter的The content of the adapter has changed问题分析 关于Adapter的The content of the adapter has changed问题分析
    从 BM 到 RBM
    从 BM 到 RBM
    Gibbs 采样的应用
    Gibbs 采样的应用
    MCMC:Gibbs 采样(matlab 实现)
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/12612331.html
Copyright © 2011-2022 走看看