xss img onerror java_java后台防止XSS的脚本攻击
import java.util.regex.Pattern;
//具体过滤关键字符
public class XSSUtil {
private static Pattern[] patterns = new Pattern[]{
// Script fragments
Pattern.compile("", Pattern.CASE_INSENSITIVE),
// src='...'
Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
// lonely script tags
Pattern.compile("", Pattern.CASE_INSENSITIVE),
Pattern.compile("
// eval(...)
Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
// expression(...)
Pattern.compile("expression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
// javascript:...
Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE),
// vbscript:...
Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE),
// onload(...)=...
Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
//现场安全测试增加校验
Pattern.compile("alert(.*?)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
Pattern.compile("<", Pattern.MULTILINE | Pattern.DOTALL),
Pattern.compile(">", Pattern.MULTILINE | Pattern.DOTALL)
};
public static String stripXSS(String value){
if (value != null) {
// TODO ESAPI library
// NOTE: It's highly recommended to use the ESAPI library and uncomment the following line to
// avoid encoded attacks.
// value = ESAPI.encoder().canonicalize(value);
// Avoid null characters
value = value.replaceAll("\0", "");
// Remove all sections that match a pattern
for (Pattern scriptPattern : patterns){
value = scriptPattern.matcher(value).replaceAll("");
}
}
return value;
}
public static void main(String[] args) {
System.out.println("11"+ XSSUtil.stripXSS(""));
// System.out.println(XSSUtil.stripXSS(""));
}
}
import com.ideatech.common.util.XSSUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport;
//每一个请求进入控制层之前会先进行字符过滤
@ControllerAdvice
@Component
@Slf4j
public class GlobalBindingInitializer {
@InitBinder
protected void initBinder(WebDataBinder binder) {
// String类型转换,将所有传递进来的String进行HTML编码,防止XSS攻击
binder.registerCustomEditor(String.class, new PropertyEditorSupport() {
@Override
public void setAsText(String text) {
if(text != null){
String cleanText = XSSUtil.stripXSS(text);
if(!cleanText.equals(text)){
log.info("xss clean, before[{}], after[{}]",text,cleanText);
text = cleanText;
}
}
setValue(text);
}
@Override
public String getAsText() {
Object value = getValue();
return value != null ? value.toString() : "";
}
});
}
}
xss img onerror java_java后台防止XSS的脚本攻击相关推荐
- 如何尽量规避XSS(跨站点脚本)攻击
2019独角兽企业重金招聘Python工程师标准>>> 跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS ...
- 【XSS技巧拓展】————4、浅谈跨站脚本攻击与防御
跨站脚本简称xss(cross-site scripting),利用方式主要是借助网站本身设计不严谨,导致执行用户提交的恶意js脚本,对网站自身造成危害.xss漏洞是web渗透测试中最常见而又使用最灵 ...
- XSS(跨站脚本)漏洞详解之XSS跨站脚本攻击漏洞的解决
XSS(跨站脚本)漏洞详解 XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, ...
- 跨网站脚本攻击(XSS)的原理与防范对策
摘要:随着计算机网络技术的迅速发展,网络安全问题已变得越来越受到人们的重视,网络攻击形式多种多样,很多蠕虫病毒.木马病毒等植入到某些网页中,给网络用户带来了很大的安全隐患.其中XSS跨网站脚本攻击,恶 ...
- vue 如何防止xss攻击 框架_LearningNotes-1/Vue/Vue中防止XSS脚本攻击 at master · axuu/LearningNotes-1 · GitHub...
Vue中防止XSS脚本攻击 最近写了一个博客评论模块,因为引入了表情包,所以就将原来的v-text的形式,改成了v-html,也就是渲染html标签,但是这样不可不免的会带来问题,就是XSS跨站脚本攻 ...
- php xss速查表,2020跨站脚本[xss]速查表 xss cheat sheet
此跨站脚本(XSS)备忘单包含许多向量,可以帮助您绕过WAF和过滤器.您可以通过事件,标签或浏览器选择向量,每个向量都包含概念证明. 该备忘单会在2020年进行定期更新. 最近更新:2020年6月4日 ...
- xss 跨站脚本漏洞 php,跨站脚本漏洞(XSS)基础讲解
XSS漏洞 一.文章简介 XSS漏洞是Web应用程序中最常见的漏洞之一.如果您的站点没有预防XSS漏洞的固定方法,那么很可能就存在XSS漏洞. 这篇文章将带你通过代码层面去理解三个问题: 什么是XSS ...
- ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)
本博文翻译自: https://dotnetcoretutorials.com/2017/10/25/owasp-top-10-asp-net-core-cross-site-scripting-xs ...
- xss植入_前端安全之XSS攻击
XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是"跨域"和"客户端执行".有人将XSS攻击分为三种,分别是: 1 ...
最新文章
- java mysql failover_MySQL MMM 双主在Failover时挂起
- 机械行业 偏计算机,院校篇丨机械类:985机械不如二本计算机?
- python类型-python语言中的数据类型有哪些
- 乱乱乱!那些惨不忍睹的机房布线
- 趣学python3(23)-队列
- 为什么是hbase而不是mongodb
- linux C bool变量
- java 8入门与实践_30个Java入门技巧和最佳实践
- Ios: 如何保護iOS束文件屬性列表,圖像,SQLite,媒體文件
- iPhone XR再降价:64GB到手最低仅需4149元
- poj3237 Tree
- 机器学习技法总结(六)Decision Tree Hypothesis
- c语言中L''作用,L/C问题: 请问L/C上的49:Confirmation Instruction 有什么作用啊[1]
- 【leetcode】617. Merge Two Binary Trees
- FFA 2021 专场解读 - 实时数据湖
- html设置谷歌火狐IE写法,原生js编写设为首页兼容ie、火狐和谷歌
- vue 自定义指令 directive
- Android储存 文件储存
- 手机输入法emoji、颜文字存储
- 输入一串字符,将其中的大写变成小写,若不为大写则原样输出
热门文章
- sql server 2005 COUNT_BIG (Transact-SQL)
- swft c 语言 数组,如何在swift中实现数组的深拷贝
- Java并发编程之堵塞队列介绍以及SkipList(跳表)
- 培训时常犯的学习误区与应对方法
- ORACLE使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下
- 背景选择器selector替换按钮默认背景
- php 接口安全解决方案,php接口数据安全解决方案(一)
- 手机整屏显示数据php,完美解决手机网页大背景不能铺完整个屏幕的超级代码
- python项目如何上线_django项目部署上线(示例代码)
- [转载] 1022 D进制的A+B (20分)【java题解】【80ms】