首先说一下什么是XSS攻击

XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,
故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web
用户将代码植入到提供给其它用户使用的页面中。

白话解释

说白了xss攻击就是jq或html代码攻击,用户提交的数据是jq或html代码,
前台拿到数据库中查出的jq或html代码,浏览器会直接解析执行

实现思路

重写request.getParamter()方法,在controller获取参数之前进行jq代码转换,也就是将
<Script>所有标签代码进行替换,在这里要注意,HttpServletRequest是个接口,
它的实现类是HttpServletRequestWrapper,所以只需要继承HttpServletRequestWrapper,
重写request.getParamter方法,在通过过滤器将原本的HttpServeltRequest替换为自定义的HttpServeltRequest

代码

1.自定义类继承HttpServletRequestWrapper重写getParamter

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {public XssHttpServletRequestWrapper(HttpServletRequest request) {super(request);}@Overridepublic String getParameter(String name) {String parameter = super.getParameter(name);if(StringUtils.isNotBlank(parameter)){//这里使用的阿帕奇的common-lang3中的转义html方法,也可以自己实现,String escapeParameter = StringEscapeUtils.escapeHtml(parameter);System.out.println(escapeParameter);return escapeParameter;}return null;}
}

2.自定义过滤器,使用自定义的HttpServletRequest

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;@Component
@WebFilter(urlPatterns = {"/*"},filterName = "xssFilter")
public class XssFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {XssHttpServletRequestWrapper req=new XssHttpServletRequestWrapper((HttpServletRequest)request);chain.doFilter(req,response);}@Overridepublic void destroy() {}
}

java实现 XSS攻击防护相关推荐

  1. sql 注入防护与xss攻击防护

    [sql注入防护] 1.过滤关键字 限制mysql关键字以输入的形式注入sql,防止恶意代码对数据库产生破坏 2.控制输入字符长度 防止输入以16进制码注入,以长度限制,补充过滤关键字的漏洞 3.关闭 ...

  2. java解决XSS攻击常用方法总结

    前言 在项目验收阶段,通常会对待验收项目做一些安全漏洞的测试,比如接口攻击,并发测试,XSS注入,SQL恶意注入测试,安全越权等操作,这时,就是考验项目的安全方面是否做的足够健壮的时候,本篇对XSS脚 ...

  3. Java 防止XSS攻击(Spring boot Spring 方式)

    以下方式的pom依赖都基于hutool <dependency><groupId>cn.hutool</groupId><artifactId>huto ...

  4. java防XSS攻击的 关键词过滤实现

    继承HttpServletRequestWrapper,实现对请求参数的过滤/*** xss请求适配器*/ public class XssHttpServletRequestWrapper exte ...

  5. 互联网安全架构平台设计之预防XSS攻击

    互联网安全架构平台设计之预防XSS攻击 文章目录 互联网安全架构平台设计之预防XSS攻击 一.什么是XSS攻击? 二.XSS攻击详解 1.XSS攻击的原理 2.解决方案 三.注意事项 一.什么是XSS ...

  6. springboot增加XSS跨站脚本攻击防护功能

    参考 文章https://my.oschina.net/u/4407261/blog/3395458 XSS原理 xss攻击的原理是利用前后端校验不严格,用户将攻击代码植入到数据中提交到了后台,当这些 ...

  7. Nginx攻击防护、CC防护、防止SQL注入、防XSS的实践配置方法

    Nginx攻击防护.CC防护.防止SQL注入.防XSS的实践配置方法 防止SQL注入.XSS攻击 Nginx安全防护屏蔽那些恶意的IP和垃圾蜘蛛 nginx网站攻击防护 Nginx简单防御CC攻击 资 ...

  8. Web 安全漏洞之 XSS 攻击,Java 开发必看!

    编者说:作为JS系工程师接触最多的漏洞我想就是 XSS 漏洞了,然鹅并不是所有的同学对其都有一个清晰的认识.今天我们请来了@卢士杰 同学为我们分享他眼中的 XSS 漏洞攻击,希望能帮助到大家. 什么是 ...

  9. java 过滤攻击报文_Spring Boot XSS 攻击过滤插件使用

    XSS 是什么 XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与 CSS(Cascading Style Sheets)名词混淆,故将跨站脚本攻击简称为 XSS,XSS ...

最新文章

  1. 利用axios解决跨域的问题
  2. nginx禁止未绑定域名访问返回444
  3. python申请内存函数_Python Ctypes c函数的内存分配
  4. grub配置文件丢失的情况下修复
  5. 1431. Kids With the Greatest Number of Candies
  6. 8个爽滑如丝的Windows小软件,不好用你拿王思葱砸死我
  7. 模拟电路概念知识体系梳理(基础部分)
  8. 欧盟抢先发布人工智能道德准则:AI要以人为本,负责任且无偏见
  9. 2018世界杯数据清单:真球迷看球必备,伪球迷速成指南(附完整赛程)
  10. html+input+hidden,input type=hidden
  11. HALCON 控制变量没有被初始化_OA大典故障案例摘录【第1397篇】理光2501如何载体初始化 ?...
  12. Allegro 16.6使用说明及技巧
  13. android黑色半透明dialog背景,Dialog背景半透明
  14. def在python中什么意思_《python中的def是什么意思》
  15. anaconda怎么切换目录_Anaconda更改工作路径
  16. mediawiki mysql_MediaWiki/安装
  17. 【译】3D打印:介绍
  18. 嵌入式设备交叉编译perf性能分析工具
  19. 文件(file)操作
  20. 2022年10个最佳URL缩短器:URL缩短器替代方案

热门文章

  1. [转载] JAVA泛型杂谈--擦除,协变,逆变,通配符等
  2. BE的完整形式是什么?
  3. 多线程下不能用truncate吗_那么多的化妆品,怀孕后都不能用了吗?
  4. 对cookie与session的理解
  5. sql 时间 没有日期_SQL-补充:日期和时间戳互转
  6. asp.net 取windows的所有进程
  7. Oracle 练习题 20131017
  8. 为什么要学python语言、学完有什么好处_学编程为什么首选Python?学完Python的优势有哪些?...
  9. 数据封装以及解封的过程
  10. unity塔防游戏怪物转向_红包版塔防游戏合集-可以赚钱领红包的塔防游戏-无广告塔防游戏红包版大全...