SpringBoot防Xss攻击

原文章:SpringBoot防Xss攻击_springboot xss_谁不想飞舞青春的博客-CSDN博客

通过上述文章进行处理后,发现在Tomcat运行时已出现异常,排查后发现其XssFilter 需要补充实现init方法和destroy方法,不然tomcat运行war包会启动失败,记录下。如下所示


import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * XSS过滤器
 */
@Component
public class XssFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        /**
         * 1. 重写getParamter方法
         * 2. 在getParamter中判断属性,然后对特殊字符进行编码,使用官方提供的工具类.
         * 3. 继续提交请求
         */
        chain.doFilter(new XssHttpServletRequestWrapper(
                (HttpServletRequest) request), response);
    }

    @Override
    public void destroy() {

    }
}

在着最近在实战过程中发现,拦截会对Json数据进行不友好处理,所以需要对json数据方形,我处理方式如下

public class XssStringJsonDeSerializer extends JsonDeserializer<String> {

    @Override
    public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        //判断是否为json格式,不是则进行处理
        if(JSONUtil.isJson(jsonParser.getText())){
            return jsonParser.getText();
        }
        return StringEscapeUtils.escapeHtml4(jsonParser.getText());
    }
}

也可以用jsonParser.currentName()获取其字段名称进行单独过滤处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值