若依学习笔记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攻击。

  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、运行时异常和系统异常
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值