不用过滤器,不用拦截器,java预防xss攻击

第一步:创建一个BaseController。

public class BaseController {
    /**
     * 重写方法
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(String.class, new StringEscapeEditor(true, false));
    }

第二步,创建所需的StringEscapeEditor类

import org.springframework.web.util.HtmlUtils;
import org.springframework.web.util.JavaScriptUtils;

import java.beans.PropertyEditorSupport;

/**
 * 转义工具类(主要针对xss攻击)
 */
public class StringEscapeEditor extends PropertyEditorSupport {
    private boolean escapeHTML;// 编码HTML


    private boolean escapeJavaScript;// 编码javascript


    public StringEscapeEditor() {

        super();

    }


    public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {

        super();

        this.escapeHTML = escapeHTML;

        this.escapeJavaScript = escapeJavaScript;

    }


    @Override

    public String getAsText() {


        Object value = getValue();

        return value != null ? value.toString() : "";

    }


    @Override

    public void setAsText(String text) throws IllegalArgumentException {


        if (text == null) {

            setValue(null);

        } else {

            String value = text;

            if (escapeHTML) {

                value = HtmlUtils.htmlEscape(value);

            }

            if (escapeJavaScript) {

                value = JavaScriptUtils.javaScriptEscape(value);

            }

            setValue(value);

        }

    }

}


第三步: 其他Controller 继承 BaseController
在这里插入图片描述
知识点以及注意:
1.主要是使用 HtmlUtils.htmlEscape(value)进行转义的.
2.注意BaseController 上没有@controller注解.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值