开源项目——实现XSS过滤Cookie过滤拦截器(二)
背景
日常我们开发人员在开发一些常用的平台时都会用到各种各样的接口,而对于这些接口的有效管理都会成为我们的一些麻烦事,一些常见的接口管理平台我们使用起来又不是很顺手,因此我想进行编写一个自己的API接口平台,用于我们日常的一些接口快速开发和管理共享使用。
里面会涉及到各类开发的知识,每项知识我们都会进行同步发布相应的学习记录文章,以便于想要学习某类知识的小伙伴能一起来成长。
该项目将每周进行更新2-4篇,该类别下同类延伸出来的文章均会以知识共享——XXXX命名。欢迎大家在我的主页下进行搜索阅读。
简介
本节为API管理平台增加基础功能-防XSS攻击-Cookie过滤,该功能主要为了确保我们接受到的请求具有一定的安全性,因此作为基础功能,我们优先纳入进来
参见文章
之前编写的技术学习文档系列之七、在拦截器中进行XSS与SQL注入拦截
开发环境
- 系统:windows10
- JDK:openjdk11
- 开发工具:IDEA 教育版
- 框架:SpringBoot
- 包管理:Gradle
后续涉及技术逐渐补充。
内容
本次涉及代码如图所示
image.png
1、在build.gradle中加入我们需要使用的软件包
implementation 'org.springframework.boot:spring-boot-starter-aop'
// https://mvnrepository.com/artifact/org.projectlombok/lombok
implementation 'org.projectlombok:lombok:1.18.20'
// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
implementation 'org.apache.commons:commons-lang3:3.12.0'
// https://mvnrepository.com/artifact/org.jsoup/jsoup
implementation 'org.jsoup:jsoup:1.14.2'
2、创建我们需要使用到的工具类
package com.cnhuashao.apimanagement.base.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.safety.Safelist;
import org.jsoup.safety.Whitelist;
/**
* 类 {@code FilterCoreUtil} 用于Xss非法标签过滤工具类 <br> 过滤html中的xss字符.
*
* 本软件仅对本次教程负责,版权所有 <a href="http://www.CN華少.com">中国,華少</a><br>
*
* @author CN華少
* <a href="mailto:lz2392504@gmail.com
* <p>
* ">CN華少</a>
*/
@Slf4j
public class FilterCoreUtil {
/**
* 使用自带的basicWithImages 白名单
* 允许的便签有a,b,blockquote,br,cite,code,dd,dl,dt,em,i,li,ol,p,pre,q,small,span,
* strike,strong,sub,sup,u,ul,img
* 以及a标签的href,img标签的src,align,alt,height,width,title属性
*/
private static final Safelist WHITE_LIST = Safelist.basicWithImages();
/** 配置过滤化参数,不对代码进行格式化 */
private static final Document.OutputSettings OUTPUT_SETTINGS = new Document.OutputSettings().prettyPrint(false);
static {
// 富文本编辑时一些样式是使用style来进行实现的
// 比如红色字体 style="color:red;"
// 所以需要给所有标签添加style属性
WHITE_LIST.addAttributes(":all", "style");
}
/**
* 过滤主方法入口
* @param content 需要过滤的字符串
* @return 过滤后的字符串
*/
public static String clean(String content) {
if(StringUtils.isNotBlank(content)){
content = content.trim();
}
return Jsoup.clean(content, "", WHITE_LIST, OUTPUT_SETTINGS);
}
}
3、创建我们需要使用的拦截器
package com.cnhuashao.apimanagement.base.filter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.uti

本文介绍了如何在SpringBoot项目中实现XSS过滤器,保护Cookie安全,通过创建FilterCoreUtil工具类、XssFilter拦截器和CookieFilter,确保接口请求的安全性。使用Lombok简化代码并配合Gradle进行依赖管理。
最低0.47元/天 解锁文章
779

被折叠的 条评论
为什么被折叠?



