xss漏洞java代码_Java处理XSS漏洞的工具类代码
public classAntiXSS {/*** 滤除content中的危险 HTML 代码, 主要是脚本代码, 滚动字幕代码以及脚本事件处理代码
*
*@paramcontent
* 需要滤除的字符串
*@return过滤的结果*/
public staticString replaceHtmlCode(String content) {if (null ==content) {return null;
}if (0 ==content.length()) {return "";
}//需要滤除的脚本事件关键字
String[] eventKeywords = { "onmouseover", "onmouseout", "onmousedown","onmouseup", "onmousemove", "onclick", "ondblclick","onkeypress", "onkeydown", "onkeyup", "ondragstart","onerrorupdate", "onhelp", "onreadystatechange", "onrowenter","onrowexit", "onselectstart", "onload", "onunload","onbeforeunload", "onblur", "onerror", "onfocus", "onresize","onscroll", "oncontextmenu", "alert"};
content= replace(content, "
content= replace(content, "
content= replace(content, "
content= replace(content, "'", "_", false);//将单引号替换成下划线
content = replace(content, "\"", "_", false);//将双引号替换成下划线//滤除脚本事件代码
for (int i = 0; i < eventKeywords.length; i++) {
content=replace(content, eventKeywords[i],"_" + eventKeywords[i], false); //添加一个"_", 使事件代码无效
}returncontent;
}/*** 将字符串 source 中的 oldStr 替换为 newStr, 并以大小写敏感方式进行查找
*
*@paramsource
* 需要替换的源字符串
*@paramoldStr
* 需要被替换的老字符串
*@paramnewStr
* 替换为的新字符串*/
private staticString replace(String source, String oldStr, String newStr) {return replace(source, oldStr, newStr, true);
}/*** 将字符串 source 中的 oldStr 替换为 newStr, matchCase 为是否设置大小写敏感查找
*
*@paramsource
* 需要替换的源字符串
*@paramoldStr
* 需要被替换的老字符串
*@paramnewStr
* 替换为的新字符串
*@parammatchCase
* 是否需要按照大小写敏感方式查找*/
private staticString replace(String source, String oldStr, String newStr,booleanmatchCase) {if (source == null) {return null;
}//首先检查旧字符串是否存在, 不存在就不进行替换
if (source.toLowerCase().indexOf(oldStr.toLowerCase()) == -1) {returnsource;
}int findStartPos = 0;int a = 0;while (a > -1) {int b = 0;
String str1, str2, str3, str4, strA, strB;
str1=source;
str2=str1.toLowerCase();
str3=oldStr;
str4=str3.toLowerCase();if(matchCase) {
strA=str1;
strB=str3;
}else{
strA=str2;
strB=str4;
}
a=strA.indexOf(strB, findStartPos);if (a > -1) {
b=oldStr.length();
findStartPos= a +b;
StringBuffer bbuf= newStringBuffer(source);
source= bbuf.replace(a, a + b, newStr) + "";//新的查找开始点位于替换后的字符串的结尾
findStartPos = findStartPos + newStr.length() -b;
}
}returnsource;
}public static voidmain(String [] args){//String str = "./fabu-advSousuo.jsp?userName=xxx&password=yyy";
String str= "http://192.168.63.87:7001/xxx/xxxx/fabu-search.jsp?searchText=";
System.out.println(AntiXSS.replaceHtmlCode(str));
}
}
xss漏洞java代码_Java处理XSS漏洞的工具类代码相关推荐
- JAVA WEB之XSS防御工具类代码示例
简述 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆.因此,有人将跨站脚本攻击缩写 ...
- 采用itextpdf 实现java的PDF生成与导出功能,含封装工具类代码
引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</a ...
- 【开发随机】JAVA+POI+自定义注解+反射构建自定义工具类实现快捷简便的Excel模板化导出(附demo代码)
220907更新 项目UAT期间,用户反映了一个问题,数据量稍大的情况下,会出现"从某一行开始,往下所有行设置的字体和字体大小不生效"的BUG. 经过排查,发现原因是:POI的XS ...
- Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)
Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...
- 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )
文章目录 一.Bitmap 复用池 二.弱引用 Bitmap 内存释放 三.从 Bitmap 复用池中获取对应可以被复用的 Bitmap 对象 1.Android 2.3.3(API 级别 10)及以 ...
- java 获取service_Java service层获取HttpServletRequest工具类的方法
Java service层获取HttpServletRequest工具类的方法 大家都知道 能在Controller/action层获取HttpServletRequest,但是这里给大家备份的是从代 ...
- 记录一下:Java 汉字获取拼音或首字母工具类
记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...
- java 手机号脱敏,身份证号脱敏 工具类
java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...
- jdbc封装工具类代码_JDBC的使用-JDBC(3)
光有理论,没有实践是不行的,本篇文章就是介绍JDBC如何使用. 本文知识点分布如下: 下载数据库驱动 创建项目添加驱动 通过 Statement 向表中插入数据 通过 Statement 对象修改表中 ...
- java将链接生成二维码工具类
一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...
最新文章
- Unity3D之预设
- HDU 4944 逆序数对
- 史密斯圆图串并联口诀_看得懂的史密斯圆图(个人总结)
- 让 gRPC 提供 REST 服务
- JdbcTemplate(操作数据库-查询返回对象、查询返回集合)
- PHP在线加密系统-陌屿云PLUS开源版V8.01
- windows2016+sqlserver2017集群搭建alwayson之域控篇
- 11 Django组件-分页器
- vue如何获取div的宽度_vue获取dom元素高度的方法
- 读《About Face 4 交互设计精髓》7
- 郭天祥的10天学会51单片机_第八节
- 英特尔居然也来搞GTA5美化MOD了……?
- ESP定律脱压缩壳aspack
- SCSI硬盘接口是什么
- 卡西欧计算器计算一元二次方正组
- 2014南京甲骨文实习生面试
- 宽带猫拨号报错651,虚惊一场
- 软件工程笔记 清华大学刘强etc
- PHP信息PHPINFO
- IDEA的一些炫酷的插件