java前端提示反射型xss_解决反射型XSS漏洞攻击「建议收藏」

java前端提示反射型xss_解决反射型XSS漏洞攻击「建议收藏」1/*2*Copyright(C),2001-2019,xiaoi机器人3*Author:han.sun4*Date:2019/2/2811:395*History:6*7*作者姓名修改时间版本号描述8*/9package…

大家好,又见面了,我是你们的朋友全栈君。

1 /*

2 * Copyright (C), 2001-2019, xiaoi机器人3 * Author: han.sun4 * Date: 2019/2/28 11:395 * History:6 * 7 * 作者姓名 修改时间 版本号 描述8 */

9 packagecom.eastrobot.robotdev.filter;10

11 importjavax.servlet.http.HttpServletRequest;12 importjavax.servlet.http.HttpServletRequestWrapper;13 importjava.util.Map;14 importjava.util.regex.Matcher;15 importjava.util.regex.Pattern;16

17 /**

18 * 〈一句话功能简述〉
19 * TODO(解决反射型XSS漏洞攻击)20 *21 *@authorhan.sun22 *@version1.0.023 *@since2019/2/28 11:3924 */

25 public class XssHttpServletRequestWrapper extendsHttpServletRequestWrapper {26

27 /**

28 * 定义script的正则表达式29 */

30 private static final String REG_SCRIPT = “”;31

32 /**

33 * 定义style的正则表达式34 */

35 private static final String REG_STYLE = “”;36

37 /**

38 * 定义HTML标签的正则表达式39 */

40 private static final String REG_HTML = “]+>”;41

42 /**

43 * 定义所有w标签44 */

45 private static final String REG_W = “]*?>[\\s\\S]*?]*?>”;46

47 private static final String REG_JAVASCRIPT = “.*javascript.*”;48

49

50 XssHttpServletRequestWrapper(HttpServletRequest request) {51 super(request);52 }53

54 @SuppressWarnings(“rawtypes”)55 @Override56 public MapgetParameterMap() {57 Map requestMap = super.getParameterMap();58 for(Object o : requestMap.entrySet()) {59 Map.Entry me =(Map.Entry) o;60 String[] values =(String[]) me.getValue();61 for (int i = 0; i < values.length; i++) {62 values[i] =xssClean(values[i]);63 }64 }65 returnrequestMap;66 }67

68 @Override69 publicString[] getParameterValues(String paramString) {70 String[] values = super.getParameterValues(paramString);71 if (values == null) {72 return null;73 }74 int i =values.length;75 String[] result = newString[i];76 for (int j = 0; j < i; j++) {77 result[j] =xssClean(values[j]);78 }79 returnresult;80 }81

82 @Override83 publicString getParameter(String paramString) {84 String str = super.getParameter(paramString);85 if (str == null) {86 return null;87 }88 returnxssClean(str);89 }90

91

92 @Override93 publicString getHeader(String paramString) {94 String str = super.getHeader(paramString);95 if (str == null) {96 return null;97 }98 str = str.replaceAll(“[\r\n]”, “”);99 returnxssClean(str);100 }101

102 /**

103 * [xssClean 过滤特殊、敏感字符]104 *@paramvalue [请求参数]105 *@return[value]106 */

107 privateString xssClean(String value) {108 if (value == null || “”.equals(value)) {109 returnvalue;110 }111 Pattern pw =Pattern.compile(REG_W, Pattern.CASE_INSENSITIVE);112 Matcher mw =pw.matcher(value);113 value = mw.replaceAll(“”);114

115 Pattern script =Pattern.compile(REG_SCRIPT, Pattern.CASE_INSENSITIVE);116 value = script.matcher(value).replaceAll(“”);117

118 Pattern style =Pattern.compile(REG_STYLE, Pattern.CASE_INSENSITIVE);119 value = style.matcher(value).replaceAll(“”);120

121 Pattern htmlTag =Pattern.compile(REG_HTML, Pattern.CASE_INSENSITIVE);122 value = htmlTag.matcher(value).replaceAll(“”);123

124 Pattern javascript =Pattern.compile(REG_JAVASCRIPT, Pattern.CASE_INSENSITIVE);125 value = javascript.matcher(value).replaceAll(“”);126 returnvalue;127 }128

129 }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131987.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Excel解密——okfone解密大师

    Excel解密——okfone解密大师Excel工作表为了保护数据,设置了打开密码,时间久了就把密码忘记了,这种情况该怎么办。这个情况可以考虑使用解密软件帮你将工作簿密码找回。okfoneExcel解密大师可以解决密码忘记的问题,使用教程如下:打开okfoneExcel解密大师,点击【找回密码】将Excel文件添加进去,选择找回方法,然后点击【开始】密码找回成功就会在软件界面上显示![…

    2022年6月28日
    122
  • linux 进程监控和自动重启的简单实现(转)

    linux 进程监控和自动重启的简单实现(转)

    2021年9月8日
    61
  • 圆柱体体积的计算公式圆柱体积的计算公式_圆的面积计算公式

    圆柱体体积的计算公式圆柱体积的计算公式_圆的面积计算公式圆柱体体积计算公式?长方形的周长=(长+宽)×2正方形的周长=边长×4长方形的面积=长×宽正方形的面积=边长×边长三角形的面积=底×高÷2平行四边形的面积=底×高梯形的面积=(上底+下底)×高÷2直径=半径×2半径=直径÷2圆的周长=圆周率×直径=圆周率×半径×2圆的面积=圆周率×半径×半径长方体的表面积=(长×宽+长×高+宽×高)×2长方体的体积=长×宽×高正方体的表面积=棱长×棱长×6正…

    2022年9月20日
    5
  • CompoundButton调用setChecked多次触发onCheckedChanged

    CompoundButton调用setChecked多次触发onCheckedChanged问题当我们只想改变CompoundButton的状态时,setChecked会出现onCheckedChanged的情况。原因源码可见只要CompoundButton设置了setOnCheckedChangeListener,就会再每次调用setChecked()的时候再次触发onCheckedChanged。解决方式1.setChecked()的时候设置屏蔽,在onCheckedCha…

    2022年5月2日
    44
  • C++后端开发_用C开发网关

    C++后端开发_用C开发网关本文为博主2020年秋招提前批的c/c++后端开发面经整理,包括C/C++语言基础,计网,数据库,linux,操作系统,场景题,智力题和hr常问题。面试问题来自前人的工作和博主面试时遇到的值得记录的问题,其中面试题答案多为博主自行解答(并且面试的时候也基本是这样回答的),回答中都附上了参考资料的链接,全文共七万余字,仅供大家作为面试准备材料的参考。希望大家在准备面试的时候都能建立一个属于自己的题库,自己从网上寻找问题,然后自己进行解答,并且记录下来,这样在面试的时候就能行云流水般的回答上来。因此我把这份面

    2022年10月3日
    3
  • 【谷粒商城】全网最全笔记(1/4)「建议收藏」

    【谷粒商城】全网最全笔记(1/4)「建议收藏」本文重点记录老师讲的话和一些配置流程,笔记中有的内容尽量少记录。边看视频变更新,我尽快更新。

    2022年6月13日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号