对 spring中的 @RequestBody json 请求数据做 XSS过滤

关于xss过滤,网上大都是是对 param的,这个很多文章了 定义过滤器。XSSFilter 不说了,

参考 https://blog.csdn.net/yucaifu1989/article/details/61616554

还有就是对所有@ResponseBody 返回内容做XSS过滤的方案:

MappingJackson2HttpMessageConverter 的objectMapper 做设置

参考 百度

那么对 @RequestBody 的 json 数据怎么过滤呢:

spring处理json是通过MappingJackson2HttpMessageConverter实现的。

MappingJackson2HttpMessageConverter 里是用的 objectMapper 做的反序列化,从 json 字符串反序列化到java对象。
我们的目的是把 入参 json中的 字符串对象做xss过滤

jackson 可以自定义 Deserializer,我们就用这个来处理

public class StringXssDeserializer extends JsonDeserializer<String> {
    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {

        String source = p.getText().trim();
        // 把字符串做XSS过滤
        return StringEscapeUtils.escapeHtml4(source);
    }
}

把MappingJackson2HttpMessageConverter 中的 :

@Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter htmlEscapingConverter = new MappingJackson2HttpMessageConverter();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addDeserializer(String.class, new StringXssDeserializer());
        htmlEscapingConverter.getObjectMapper().registerModule(simpleModule);
        return htmlEscapingConverter;
    }

Done

该方案无法对单个字段做特殊处理,全部会被转义。

本方案 对 @RequestBody String 无效

// 对下面的 RequestBody无效
@RequestMapping("test")
public String testxssstr(@RequestBody String data) {
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,127评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,628评论 1 92
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,993评论 6 342
  • 最近公司气氛死一般的寂静,让人觉得很压抑,我不知道这种情绪应该和谁去说一下,应该大家都有这种感受,使得大家原本就不...
    云中歌_2439阅读 141评论 0 0
  • 每逢七一,公司都会组织党员同志们进行一次有意义的活动,或忆苦思甜,或缅怀先烈,今年与往年稍有不同——登山。客车载着...
    锦心明道阅读 539评论 0 0