参考文章

若依源码学习8:防XSS攻击以及全局异常处理_小宇哥x的博客-CSDN博客_若依xss

Xss简介

XSS (Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。XSS的原理是:

恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。

XSS攻击主要有三类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。

  1. 反射型XSS (你提交的恶意数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击)。
  2. 存储型XSS (你提交的数据成功的实现了XSS,存入了数据库或者写入日志,别人访问这个页面的时候就会自动触发)。
  3. DOMXSS

SQL 注入

SQL注入:通过客户端的输入把SQL命令注入到一个应用的数据库中,从而执行恶意的SQL语句。

打个比方:将输入的内容伪装成SQL语句我们有一个登录框,需要输入用户名和密码,然后在输入框输入 'or ‘111’ = '111 。我们在查询用户名和密码是否正确的时候,本来执行的sql语句是:select * from user where username = ‘’ and password = ‘’. 现在输入密码是上面这样的,然后我们通过参数进行拼接,拼接后的sql语句就是:

select * from user where username = ‘’ and password = ’ ’ or ‘111’ = '111 ';

与原来相比,多出一个or语句,只要这两个有一个是正确的话,就条件成立。因此密码验证就会被跳过。还有输入密码:

’; drop table user;,

sql命令就变成了:

select * from user where username = ‘’ and password = ‘’; drop table user;’

当SQL语句执行时,user表会被直接删除。

sql被攻击的原因是:sql语句伪造参数,然后对参数进行拼接后形成xss攻击的sql语句。最后会导致数据库被攻击。

防范的方法:

1、我们可以使用预编译语句(PreparedStatement,这样的话即使我们使用sql语句伪造成参数,到了服务端的时候,这个伪造sql语句的参数也只是简单的字符,并不能起到攻击的作用。

2、数据库中密码不应明文存储的,可以对密码使用md5进行加密,为了加大破解成本,所以可以采用加salt的方式。

XSS 攻击解决方案

1、配置文件
# 防止XSS攻击

xss: # 过滤开关enabled: true# 排除链接(多个用逗号分隔)excludes: /system/notice/*# 匹配链接urlPatterns: /system/*,/monitor/*,/tool/*

2、自定义XSS攻击的过滤器
对于匹配的请求路径进行过滤,装饰者模式使用自定义的 Request 替换 原ServletRequest,继承HttpServletRequestWrapper重写 getParameterValues方法,对前端传递过来的参数进行检验和过滤。

因此,想要改变在httpServletRequest中的参数,可以通过httpServletRequest的装饰类HttpServletRequestWrapper来实现,只需要在装饰类中按照需要重写其getParameter(getParameterValues)方法即可。

全局异常处理

Spring boot/mvc项目中通过@RestControllerAdvice或者@ControllerAdvice配合@ExceptionHandler实现全局异常统一处理。

@RestControllerAdvice相当于Controller的切面,对异常统一处理,定制,这样更好返回给前端。

/*** 全局异常处理器* * @author ruoyi*/
@RestControllerAdvice
public class GlobalExceptionHandler
{private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);// 通过 AjaxResult 返回统一结果,以及日志的记录1、请求方式不支持异常2、拦截未知的运行时异常3、自定义业务异常4、自定义验证异常,也就是数据传入时的检查5、运行时异常和系统异常
}

若依学习笔记08——Xss相关推荐

  1. JavaWeb黑马旅游网-学习笔记08【旅游线路详情】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  2. 【计算机网络学习笔记08】ICMP

    [计算机网络学习笔记08]ICMP 1 概念 由[RFC 792]定义的因特网控制报文协议(Internet Control Message Protocol,ICMP),被主机和路由器用来彼此沟通的 ...

  3. ESP32 单片机学习笔记 - 08 - WebSocket客户端

    前言,终于要到网络模型的最后一层,第四层,应用层,http.websocket的实践了. 文章目录 ESP32 单片机学习笔记 - 08 - WebSocket客户端 一.应用层协议 科普概念 二.编 ...

  4. 《数据结构(C语言版)》学习笔记08 查找

    目录 写在前面 一.顺序查找 1.1 普通的无序查找方法 1.2 改进的无序查找--哨兵 1.3 有序的顺序查找 二.折半查找/二分查找 三.分块查找 四.二叉搜索树 五.平衡二叉搜索树 六.B树 七 ...

  5. 【安全牛学习笔记】xss跨站

    xss跨站解释 xss类型分类      xss***手法      模拟一次xss*** 简述 跨站脚本***(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息.***者通过在链接中插入恶意代码, ...

  6. Easy EDA #学习笔记08# | 创建元件库(原理图库与PCB封装库)

    目录 引言 1. 创建原理图库 1.1 创建原理图库的流程 1.2 新建原理图库 1.3 制作电阻原理图符号 1.3.1 绘制元件符号 1.3.2 添加属性信息 2. 创建PCB库 2.1创建PCB封 ...

  7. ROS学习笔记08、机器人导航仿真(slam、map_server、amcl、move_base与导航消息介绍)

    文章目录 前言 一.导航概述 1.1.导航模块 1.2.导航之坐标系 二.导航实现 准备工作(安装导航包和新建工程包) 2.1.SLAM建图 2.1.1.认识gmapping 2.1.2.实操 2.2 ...

  8. XSS学习笔记:XSS Challenges 1-19通关全详解

    前言 学习下XSS 主要是XSS Challenges 平台 共19关 模仿真实xss挖洞的情景,用浏览器中的f12中搜索,找出我们控制的代码所在的位置 思考那些个位置哪个或哪几个位置可以被注入我们想 ...

  9. 学习...笔记08:Origin绘制常见图像的方法总结

    文章目录 前言 一.获取绘图使用的数据 1.准备磁滞回线的数据 2.准备标量场平面视图的数据 3.准备带箭头矢量图的数据 4.准备矢量场平面视图的数据 5.准备标量场的数据 6.准备拼图的数据 二.O ...

最新文章

  1. 世界上手速最快的仿人机器人诞生在韩国!魔术师也要失业了!
  2. java转账_使用Java模拟银行账户存、取款、转账功能
  3. RDCL报表的两种使用方法/为DataSet添加两个Table_AX
  4. go mysql 数据 json,golang查询数据返回json
  5. 黑客必须掌握的基本技能
  6. Oreo易支付程序开源源码分享发行版V1.3
  7. 青蛙学Linux—Zabbix Agent的主动模式和被动模式
  8. 敏捷开发 我的经验(一)基本概念
  9. BZOJ 4143 The Lawyer
  10. 计算机将在1分钟重启,Win10开机经常提示将在一分钟后自动重启如何处理
  11. OpenCV入门系列 —— medianBlur中值滤波
  12. 编写Test3.jsp,在JSP页面中静态包含文件Sqrt.jsp(该页面计算数据的算术平方根)。要求程序有两个文件,主文件静态包含一个能够计算数据的算术平方根的页面。
  13. sox处理mp3_音频处理利器--SoX
  14. 基于HTML美中华传统文化题材网页项目的设计与实现 (纯HTML+CSS制作中国茶文化网站)...
  15. 图文推荐系统之数据冷启小结
  16. 三星公佈Bixby2.0升級後比蘋果更酷
  17. 1.超时未支付订单处理
  18. Android手机投屏初探
  19. 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
  20. Java版二叉树的删除

热门文章

  1. mysql两张大表join优化,MySQL系列6 - join语句的优化
  2. 气象nc数据插值处理
  3. Springboot 单元测试结合Jacoco收集单元测试覆盖率
  4. 激光测距的原理与应用
  5. 软件工程第二章 软件工程
  6. workers.properties配置
  7. 9.linux库引入之分文件编程
  8. EMC环境底噪测试方法
  9. 电脑硬盘分类以及结构
  10. 一文了解72名图灵奖获得者的成就