1.13.1
工具类代码
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
-
Xss防御工具类
-
@author tarzan liu
-
@version V1.0
-
@date 2021年7月11日
*/
public class XssKillerUtil {
private static final String[] WHITE_LIST = {“p”, “strong”, “pre”, “code”, “span”, “blockquote”, “em”, “a”};
private static String reg = null;
private static String legalTags = null;
static {
StringBuilder regSb = new StringBuilder(“<”);
StringBuilder tagsSb = new StringBuilder();
for (String s : WHITE_LIST) {
regSb.append(“(?!”).append(s).append(" )");
tagsSb.append(‘<’).append(s).append(‘>’);
}
regSb.append(“(?!/)[^>]*>”);
reg = regSb.toString();
legalTags = tagsSb.toString();
}
/**
-
xss白名单验证
-
@param xssStr
-
@return
*/
public static boolean isValid(String xssStr) {
if (null == xssStr || xssStr.isEmpty()) {
return true;
}
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(xssStr);
while (matcher.find()) {
String tag = matcher.group();
if (!legalTags.contains(tag.toLowerCase())) {
return false;
}
}
return true;
}
/**
-
自定义的白名单
-
@return
*/
private static Whitelist custom() {
return Whitelist.none().addTags(“p”, “strong”, “pre”, “code”, “span”, “blockquote”, “br”).addAttributes(“span”, “class”);
}
/**
-
根据白名单,剔除多余的属性、标签
-
@param xssStr
-
@return
*/
public static String clean(String xssStr) {
if (null == xssStr || xssStr.isEmpty()) {
return “”;
}
return Jsoup.clean(xssStr, custom());
}
}
使用示例代码
@PostMapping(“comment/save”)
public ResponseVo saveComment(HttpServletRequest request, Comment comment) throws UnsupportedEncodingException {
if (StringUtils.isEmpty(comment.getNickname())) {
return ResultUtil.error(“请输入昵称”);
}
String content = comment.getContent();
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ndroid开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!