package com.test.bijihoudaun.config;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StringDeserializer;
import org.springframework.boot.jackson.JsonComponent;

import java.io.IOException;

/**
 * Jackson XSS 过滤反序列化器
 * 对所有 JSON 中的 String 类型字段进行 XSS 过滤
 */
@JsonComponent
public class XssStringDeserializer extends StringDeserializer {

    @Override
    public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String value = super.deserialize(p, ctxt);
        if (StrUtil.isBlank(value)) {
            return value;
        }
        // 过滤 XSS
        return HtmlUtil.filter(value);
    }
}
