Ruoyi框架学习--XSS

什么是XSS?

XSS通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。

  1. 跨站脚本攻击(前端注入)
  2. 注入攻击的本质,是把用户输入的数据当做前端代码执行。
  3. 这里有两个关键条件:
    第一个是用户能够控制输入;
    第二个是原本程序要执行的代码,拼接了用户输入的数据。
  4. SQL注入拼接的是操作数据库的SQL语句。XSS拼接的是网页的HTML代码,一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句(总结:XSS就是拼接恶意的HTML)

XSS能获得什么?

  • 盗取Cookie并发送(用的最频繁的) , document.cookie —— 读取cookie,AJAX【核心是默认异步执行机制,依靠JS】发送数据
  • 获取内网ip(攻击内网、扫描内网)
  • 获取浏览器保存的明文密码
  • 截取网页屏幕
  • 网页上的键盘记录
  • 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
  • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

XSS业务场景

重灾区:评论区、留言区、个人信息、订单信息等
针对型:站内信、网页即时通讯、私信、意见反馈
存在风险:搜索框、当前目录、图片属性等

XSS类型

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

Ruoyi框架XSS的配置:

就用一个封装好的注解:@Xss

下面这句啥就是匹配输入的是不是

主要也就是用的正则表达式匹配字符串(正则表达式语法难得雅痞,建议百度):

正则表达式 – 语法 | 菜鸟教程

 private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />";
# 防止XSS
xss: 
  # 过滤开关
  enabled: true
  # 排除过滤链接(多个用逗号分隔)
  excludes: /system/notice
  # 匹配过滤链接(多个用逗号分隔)
  urlPatterns: /system/*,/monitor/*,/tool/*

Ruoyi框架防止重复提交过滤:

就用一个封装好的注解:@RepeatSubmit

你可能感兴趣的:(Ruoyi学习笔记,xss,javascript,前端)