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漏洞的工具类代码相关推荐

  1. JAVA WEB之XSS防御工具类代码示例

    简述 人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆.因此,有人将跨站脚本攻击缩写 ...

  2. 采用itextpdf 实现java的PDF生成与导出功能,含封装工具类代码

    引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</a ...

  3. 【开发随机】JAVA+POI+自定义注解+反射构建自定义工具类实现快捷简便的Excel模板化导出(附demo代码)

    220907更新 项目UAT期间,用户反映了一个问题,数据量稍大的情况下,会出现"从某一行开始,往下所有行设置的字体和字体大小不生效"的BUG. 经过排查,发现原因是:POI的XS ...

  4. Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

    Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...

  5. 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )

    文章目录 一.Bitmap 复用池 二.弱引用 Bitmap 内存释放 三.从 Bitmap 复用池中获取对应可以被复用的 Bitmap 对象 1.Android 2.3.3(API 级别 10)及以 ...

  6. java 获取service_Java service层获取HttpServletRequest工具类的方法

    Java service层获取HttpServletRequest工具类的方法 大家都知道 能在Controller/action层获取HttpServletRequest,但是这里给大家备份的是从代 ...

  7. 记录一下:Java 汉字获取拼音或首字母工具类

    记录一下:Java 汉字获取拼音或首字母工具类 Maven依赖配置 Java代码 本文主要记录一下在Java中,如何将字符串中的中文转化为拼音,获取汉字串拼音首字母,获取汉字串拼音的工具类,以及相关的 ...

  8. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  9. jdbc封装工具类代码_JDBC的使用-JDBC(3)

    光有理论,没有实践是不行的,本篇文章就是介绍JDBC如何使用. 本文知识点分布如下: 下载数据库驱动 创建项目添加驱动 通过 Statement 向表中插入数据 通过 Statement 对象修改表中 ...

  10. java将链接生成二维码工具类

    一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...

最新文章

  1. Unity3D之预设
  2. HDU 4944 逆序数对
  3. 史密斯圆图串并联口诀_看得懂的史密斯圆图(个人总结)
  4. 让 gRPC 提供 REST 服务
  5. JdbcTemplate(操作数据库-查询返回对象、查询返回集合)
  6. PHP在线加密系统-陌屿云PLUS开源版V8.01
  7. windows2016+sqlserver2017集群搭建alwayson之域控篇
  8. 11 Django组件-分页器
  9. vue如何获取div的宽度_vue获取dom元素高度的方法
  10. 读《About Face 4 交互设计精髓》7
  11. 郭天祥的10天学会51单片机_第八节
  12. 英特尔居然也来搞GTA5美化MOD了……?
  13. ESP定律脱压缩壳aspack
  14. SCSI硬盘接口是什么
  15. 卡西欧计算器计算一元二次方正组
  16. 2014南京甲骨文实习生面试
  17. 宽带猫拨号报错651,虚惊一场
  18. 软件工程笔记 清华大学刘强etc
  19. PHP信息PHPINFO
  20. IDEA的一些炫酷的插件

热门文章

  1. 淘晶驰串口屏下载工程慢怎么办
  2. 欧姆龙PLC程序 欧姆龙NX系列PLC程序,ST语言和梯形图配合使用,数据处理使用ST语言,逻辑用梯形图
  3. 几个实用PPT排版技巧,让幻灯片不在枯燥
  4. Ubuntu软件安装新选择—星火应用商店(QQ、微信等一网打尽)
  5. 小米8SE 开箱及体验
  6. tuxedo客户端调用java_tuxedo调用客户端_tuxedo调用java socket_调用tuxedo
  7. PMBOK第六版学习笔记
  8. 5G及移动边缘计算(MEC)学习笔记(2)
  9. 手机APP测试需要注意的问题
  10. cuda编程(一)基础