若依学习笔记08——Xss
参考文章
若依源码学习8:防XSS攻击以及全局异常处理_小宇哥x的博客-CSDN博客_若依xss
Xss简介
XSS (Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。XSS的原理是:
恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。
XSS攻击主要有三类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。
- 反射型
XSS
(你提交的恶意数据成功的实现了XSS
,但是仅仅是对你这次访问产生了影响,是非持久型攻击)。 - 存储型
XSS
(你提交的数据成功的实现了XSS
,存入了数据库或者写入日志,别人访问这个页面的时候就会自动触发)。 DOM
型XSS
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相关推荐
- JavaWeb黑马旅游网-学习笔记08【旅游线路详情】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- 【计算机网络学习笔记08】ICMP
[计算机网络学习笔记08]ICMP 1 概念 由[RFC 792]定义的因特网控制报文协议(Internet Control Message Protocol,ICMP),被主机和路由器用来彼此沟通的 ...
- ESP32 单片机学习笔记 - 08 - WebSocket客户端
前言,终于要到网络模型的最后一层,第四层,应用层,http.websocket的实践了. 文章目录 ESP32 单片机学习笔记 - 08 - WebSocket客户端 一.应用层协议 科普概念 二.编 ...
- 《数据结构(C语言版)》学习笔记08 查找
目录 写在前面 一.顺序查找 1.1 普通的无序查找方法 1.2 改进的无序查找--哨兵 1.3 有序的顺序查找 二.折半查找/二分查找 三.分块查找 四.二叉搜索树 五.平衡二叉搜索树 六.B树 七 ...
- 【安全牛学习笔记】xss跨站
xss跨站解释 xss类型分类 xss***手法 模拟一次xss*** 简述 跨站脚本***(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息.***者通过在链接中插入恶意代码, ...
- Easy EDA #学习笔记08# | 创建元件库(原理图库与PCB封装库)
目录 引言 1. 创建原理图库 1.1 创建原理图库的流程 1.2 新建原理图库 1.3 制作电阻原理图符号 1.3.1 绘制元件符号 1.3.2 添加属性信息 2. 创建PCB库 2.1创建PCB封 ...
- ROS学习笔记08、机器人导航仿真(slam、map_server、amcl、move_base与导航消息介绍)
文章目录 前言 一.导航概述 1.1.导航模块 1.2.导航之坐标系 二.导航实现 准备工作(安装导航包和新建工程包) 2.1.SLAM建图 2.1.1.认识gmapping 2.1.2.实操 2.2 ...
- XSS学习笔记:XSS Challenges 1-19通关全详解
前言 学习下XSS 主要是XSS Challenges 平台 共19关 模仿真实xss挖洞的情景,用浏览器中的f12中搜索,找出我们控制的代码所在的位置 思考那些个位置哪个或哪几个位置可以被注入我们想 ...
- 学习...笔记08:Origin绘制常见图像的方法总结
文章目录 前言 一.获取绘图使用的数据 1.准备磁滞回线的数据 2.准备标量场平面视图的数据 3.准备带箭头矢量图的数据 4.准备矢量场平面视图的数据 5.准备标量场的数据 6.准备拼图的数据 二.O ...
最新文章
- 世界上手速最快的仿人机器人诞生在韩国!魔术师也要失业了!
- java转账_使用Java模拟银行账户存、取款、转账功能
- RDCL报表的两种使用方法/为DataSet添加两个Table_AX
- go mysql 数据 json,golang查询数据返回json
- 黑客必须掌握的基本技能
- Oreo易支付程序开源源码分享发行版V1.3
- 青蛙学Linux—Zabbix Agent的主动模式和被动模式
- 敏捷开发 我的经验(一)基本概念
- BZOJ 4143 The Lawyer
- 计算机将在1分钟重启,Win10开机经常提示将在一分钟后自动重启如何处理
- OpenCV入门系列 —— medianBlur中值滤波
- 编写Test3.jsp,在JSP页面中静态包含文件Sqrt.jsp(该页面计算数据的算术平方根)。要求程序有两个文件,主文件静态包含一个能够计算数据的算术平方根的页面。
- sox处理mp3_音频处理利器--SoX
- 基于HTML美中华传统文化题材网页项目的设计与实现 (纯HTML+CSS制作中国茶文化网站)...
- 图文推荐系统之数据冷启小结
- 三星公佈Bixby2.0升級後比蘋果更酷
- 1.超时未支付订单处理
- Android手机投屏初探
- 海康威视旗下萤石网络上市:首日跌12% 公司市值142亿
- Java版二叉树的删除