首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jackson序列化对象时编辑字符串字段值

使用Jackson序列化对象时编辑字符串字段值
EN

Stack Overflow用户
提问于 2015-10-22 17:43:26
回答 1查看 979关注 0票数 1

在Spring MVC项目中,我有一些控制器,它们以各种对象的形式返回数据。稍后,这些对象被序列化为JSON,JSON作为响应返回给客户端。

这是通过在应用程序配置中向configureMessageConverters()注册自定义MappingJackson2HttpMessageConverter来实现的。转换器使用

jackson.databind.ObjectWriter.writeValue(jackson.core.JsonGenerator, object)

用于对象序列化。

现在我需要实现XSS保护。由于所有数据都要经过序列化步骤,因此我想在这里过滤字符串值,删除除白名单中的符号(字母数字和一些标点符号)之外的所有符号。

有没有办法给Jackson提供一个在序列化过程中编辑字符串值的过滤器?

EN

回答 1

Stack Overflow用户

发布于 2016-08-04 05:39:25

我有一个MappingJackson2HttpMessageConverter的实例。在这里,在方法writeInternal(Object object, HttpOutputMessage outputMessage)中,我创建了我的自定义映射器的一个实例:mapper = new KJsonMapper();然后在那里使用这个映射器生成JSON。

KJsonMapper.java:

代码语言:javascript
复制
public class KJsonMapper extends ObjectMapper {

    public KJsonMapper() {
        enableAntiXSS();
    }

    private void enableAntiXSS() {
        SimpleModule module = new SimpleModule("Anti-XSS Serializer",
            new Version(1, 0, 0, "FINAL", "klab", "klab.anti-xss-serializer"));
        module.addSerializer(String.class, new KJsonAntiXssSerializer());
        registerModule(module);
    }
}

映射器本身使用自定义的JsonSerializer,这是为了提供反xss过滤。

KJsonAntiXssSerializer.java:

代码语言:javascript
复制
public class KJsonAntiXssSerializer extends JsonSerializer<String> {

    public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
            throws IOException {
        if (value == null) {
            return;
        }
        String encodedValue = antiXss(value);
        jsonGenerator.writeString(encodedValue);
    }

    private String antiXss(String value) {
        // return processed value from here
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33278002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档