对于程序员来说安全防御,无非从两个方面考虑,要么前端要么后台。

一、首先从前端考虑过滤一些非法字符。

前端的主控js中,在 输入框标签中,

找到点击发送按钮后,追加到聊天panel前 进行过滤input输入内容

1 // 过滤xss反射型漏洞

2 filterinputtxt: function (html) {

3 html = html.replace(/(.*]+>.*)/g,""); // html标记

4 html = html.replace(/([\r\n])[\s]+/g, ""); // 换行、空格

5 html = html.replace(//g, ""); // html注释

6 html = html.replace(/['"‘’“”!@#$%^&*{}!¥()()×+=]/g, ""); // 非法字符

7 html = html.replace("alert","");

8 html = html.replace("eval","");

9 html = html.replace(/(.*javascript.*)/gi,"");

10 if (html === "") {

11 html = "你好";

12 }

13 return html;

14 }

二、在后台api服务解决反射型xss漏洞

thinking:一般来说前端可以过滤一下基本的非法恶意代码攻击,如果恶意脚本被请求到服务端啦,那么就需要请求参数未请求接口前进行过滤一些非法字符。

handle:1、自定义过滤器实现filter接口

2、在dofilter方法中对request、response进行设置处理

##处理request请求参数。

1 /*

2 * copyright (c), 2001-2019, xiaoi机器人

3 * author: han.sun

4 * date: 2019/2/28 11:39

5 * history:

6 *

7 * 作者姓名 修改时间 版本号 描述

8 */

9 package com.eastrobot.robotdev.filter;

10

11 import javax.servlet.http.httpservletrequest;

12 import javax.servlet.http.httpservletrequestwrapper;

13 import java.util.map;

14 import java.util.regex.matcher;

15 import java.util.regex.pattern;

16

17 /**

18 * 〈一句话功能简述〉

19 * todo(解决反射型xss漏洞攻击)

20 *

21 * @author han.sun

22 * @version 1.0.0

23 * @since 2019/2/28 11:39

24 */

25 public class xsshttpservletrequestwrapper extends httpservletrequestwrapper {

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 @override

56 public map getparametermap() {

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 return requestmap;

66 }

67

68 @override

69 public string[] 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 = new string[i];

76 for (int j = 0; j < i; j++) {

77 result[j] = xssclean(values[j]);

78 }

79 return result;

80 }

81

82 @override

83 public string getparameter(string paramstring) {

84 string str = super.getparameter(paramstring);

85 if (str == null) {

86 return null;

87 }

88 return xssclean(str);

89 }

90

91

92 @override

93 public string getheader(string paramstring) {

94 string str = super.getheader(paramstring);

95 if (str == null) {

96 return null;

97 }

98 str = str.replaceall("[\r\n]", "");

99 return xssclean(str);

100 }

101

102 /**

103 * [xssclean 过滤特殊、敏感字符]

104 * @param value [请求参数]

105 * @return [value]

106 */

107 private string xssclean(string value) {

108 if (value == null || "".equals(value)) {

109 return value;

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 return value;

127 }

128

129 }

##自定义filter过滤器。

1 /*

2 * copyright (c), 2001-2019, xiaoi机器人

3 * author: han.sun

4 * date: 2019/2/28 11:38

5 * history:

6 *

7 * 作者姓名 修改时间 版本号 描述

8 */

9 package com.eastrobot.robotdev.filter;

10

11 import javax.servlet.*;

12 import javax.servlet.http.httpservletrequest;

13 import javax.servlet.http.httpservletresponse;

14 import java.io.ioexception;

15

16 /**

17 * 〈在服务器端对 cookie 设置了httponly 属性,

18 * 那么js脚本就不能读取到cookie,

19 * 但是浏览器还是能够正常使用cookie〉

20 * todo(禁用js脚步读取用户浏览器中的cookie)

21 *

22 * @author han.sun

23 * @version 1.0.0

24 * @since 2019/2/28 16:38

25 */

26 public class xssfilter implements filter {

27

28 @override

29 public void init(filterconfig filterconfig) throws servletexception {

30

31 }

32

33 @override

34 public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {

35

36 httpservletrequest req = (httpservletrequest) request;

37 httpservletresponse resp = (httpservletresponse) response;

38

39 // 解决动态脚本获取网页cookie,将cookie设置成httponly

40 string sessionid = req.getsession().getid();

41 resp.setheader("set-cookie", "jsessionid=" + sessionid + "; httponly");

42 resp.setheader("x-frame-options", "sameorigin");

43

44 chain.dofilter(new xsshttpservletrequestwrapper((httpservletrequest) request), response);

45 }

46

47 @override

48 public void destroy() {

49 }

50 }

需要在web.xml文件中添加自定义过滤器映射,让其起作用

1

2 xssescape

3 com.eastrobot.robotdev.filter.xssfilter

4

5

6 xssescape

7 /*

8

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

java 防止反射_解决反射型XSS漏洞攻击相关推荐

  1. java前端提示反射型xss_解决反射型XSS漏洞攻击

    1 /* 2 * Copyright (C), 2001-2019, xiaoi机器人3 * Author: han.sun4 * Date: 2019/2/28 11:395 * History:6 ...

  2. java反射行跨站脚本攻击_跨站脚本攻击之反射型XSS漏洞【转载】

    如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给用户.对于开发者来说,使用这 ...

  3. Java SSM框架+jsp处理存储型XSS和反射型XSS漏洞

    关于存储型XSS和反射型XSS漏洞的修复 *这里是java中SSM框架,前端页面为JSP,仅在服务端做处理,思路是对脚本转义* 存储型XSS漏洞 1:表现形式 2:解决方式 第一步:创建过滤器XssR ...

  4. 【安全牛学习笔记】反射型XSS***漏洞的原理及解决办法

    发射型XSS 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理 3.漏洞危害 4.一些tips 5.如何避免&修复漏洞 直接将用户数据输出到浏览器,没有做安全处理 搜索: www-dat ...

  5. xxs漏洞危害_反射型XSS漏洞详解

    反射型XSS漏洞 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数,并在响应中将这个文 本返回给用户.对于开发者而言,使用这种机制 ...

  6. 跨站脚本攻击之反射型XSS漏洞【转载】

    转载自FovWeb.com 如果一个WEB应用程序使用动态页面传递参数向用户显示错误信息,就有可能会造成一种常见的XSS漏洞.一般情况下,这种页面使用一个包含消息文本的参数,并在页面加载时将文本返回给 ...

  7. 反射型XSS漏洞详解

    反射型XSS漏洞 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数,并在响应中将这个文 本返回给用户.对于开发者而言,使用这种机制 ...

  8. Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)

    漏洞描述 Apache Sling 是一个基于可扩展内容树(extensible content tree)的 RESTful Web 应用框架. 1.1.4 之前版本的 Apache Sling 中 ...

  9. php反射型xss,利用反射型XSS漏洞,模拟获取登录账户的Cookie

    目录结构 一.测试环境 二.测试目标 三.原理描述 四.操作步骤 1.在服务器上搭建并启用hacker测试网站 2.在服务器上测试站点根目录内创建一个存放攻击脚本的文件夹 3.在xss文件夹下创建攻击 ...

  10. 对未标记为可安全执行的脚本_三、??XSS跨站脚本攻击

    跨站脚本攻击(Cross Site Scripting),缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意 ...

最新文章

  1. R语言画Cox回归森林图
  2. Linux下Java开发环境的搭建Tomcat6+jdk6+eclipse3.5.2+Myeclipse9.0+mysql5.1.47
  3. FD.io/VPP — 常用指令集合
  4. zabbix API 删除host
  5. 怎么用BarTender批量打印标签
  6. Linux 初始root密码设置
  7. 自定义AlertDialog 问自己的单选item
  8. docker应用,后端服务出现OOM情况排查
  9. javascript中数据类型及转换、String()和toString()的区别
  10. js layui跳转页面_【WEB前端开辟】layui的iframe跳转链接与页面按钮跳转相干引见...
  11. odd raio值 是什麼_NBA2K20球员能力值又一次更新!
  12. XSpreadsheet-在线表格插件
  13. html事件绑定的方法,如何获取html元素所绑定的事件
  14. Visio 2007 序列号
  15. 2. Zigbee应用程序框架开发指南 - 应用程序框架结构
  16. 万年历包括对应节日c语言,C语言 程序设 节日查询和任务提醒系统-万年历.doc
  17. Python(arcpy) 批量shp转raster
  18. 干货 | 关于离岸银行开户(境外开户),看这一篇就够了
  19. 华为设备配置OSPF负载分担
  20. win10开机占用内存大,资源管理器也看不到运行进程

热门文章

  1. 递归神经网络/_递归神经网络
  2. mysql least 参数_MySQL中MIN()和LEAST()的区别
  3. linux内核提高系统实时性,Linux操作系统实时性分析及改进策略
  4. 泰森怎么会输给道格拉斯_揭秘:泰森惨败给道格拉斯之后,为何不去打二番战复仇...
  5. 【Clojure 基本知识】 关于函数参数的各种高级用法
  6. Linux 内核版本号查看
  7. RxJS修炼之 用弹珠测试学习RxJS
  8. 数据结构10——强连通
  9. spring中IOC的简单使用
  10. 和我一起学《HTTP权威指南》——Web服务器