如何使用 XSS 过滤器后还原 HTML 输入?

如何使用 xss 过滤器后还原 html 输入?

如何使用 xss 过滤器后还原 html 输入

为了防止跨站脚本攻击,xss 过滤器会对非法字符进行转义,导致页面显示不正确。为了解决这个问题,我们有两种方法:

在页面上转义

在页面渲染的代码中使用 html 解码器,将转义后的字符还原为原始输入。

java 代码中转义

使用 spring security 的 responsebodyadvice 切面,在返回响应之前对 json 内容进行 html 解码。这种方法需要在 java 代码中配置以下内容:

@Configuration
public class XssConverterConfiguration {

    @Bean
    public ResponseBodyAdvice converter() {
        return new XssConverter();
    }
}

public class XssConverter implements ResponseBodyAdvice {

    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
                                  Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
        if (body instanceof String) {
            return HtmlUtils.htmlUnescape((String) body);
        }
        return body;
    }
}

以上就是如何使用 XSS 过滤器后还原 HTML 输入?的详细内容,更多请关注其它相关文章!