什么是XSS漏洞——来自Google Gemini

XSS漏洞,全称跨站脚本攻击(Cross-Site Scripting),是代码注入的一种。它允许恶意用户将代码注入到网页上,原理是攻击者将恶意代码注入到可信网站的页面中,当用户浏览该页面时,恶意代码就会被浏览器执行,从而达到攻击者的目的。

XSS攻击的常见危害包括:

  • 盗取用户敏感信息,如Cookie、账号密码等;
  • 控制用户浏览器,进行钓鱼攻击、重定向等;
  • 篡改网页内容,进行欺诈等。

XSS漏洞的常见类型包括:

  • 反射型XSS:攻击者将恶意代码通过URL参数、表单提交等方式注入到目标网页中,当用户访问该网页时,恶意代码就会被执行;
  • 存储型XSS:攻击者将恶意代码注入到数据库等存储介质中,当用户访问包含恶意代码的网页时,恶意代码就会被执行;
  • DOM型XSS:攻击者利用JavaScript代码动态地将恶意代码注入到网页中,当用户访问该网页时,恶意代码就会被执行。

XSS漏洞的防范措施包括:

  • 对用户输入进行严格的过滤和验证;
  • 对输出内容进行转义处理;
  • 使用安全的编码规范;
  • 更新浏览器和Web服务器软件。

我的理解

跨站脚本攻击XSS(Cross Site Scripting,XSS),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页面时,嵌入Web里面的JS代码会被执行,从而达到恶意攻击用户的目的。

虽然泄露个人信息较为严重,但是实战难以利用,比较鸡肋,最大的危害就是能窃取用户Cookie资料,从而执行任意操作,在挖洞中应该比较常见。

反射型XSS


这是一个查询你最喜欢的球星的页面,输入kobe,就回显愿你和kobe一样,那我随便输,都会在前端的Javascript中复现,这个时候思路就来了
输入作者的名字,原封不动的回显输入的东西

接着你变成黑客,输入经典的<script>alert(1)</script>,神奇的东西出现了

上方弹出了一个大大的1,而下方没有回显,说明语句进入了代码中执行

在这里插入图片描述

存储型XSS


看到一个留言板,先故技重施

弹了个1,可以看到留言列表中多了一条记录,并且查看源代码是原封不动的存入数据库中的


接下来就是见证存储型的危害了,换一个浏览器访问同一个的URL,也直接弹1!

DOM型XSS

DOM型XSS全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式。
HTML标签都是节点,节点组成了节点树。通过HTML DOM 可以对树上的所有节点进行修改。
服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。

下面看一个DOM将html转换为树状结构体,深入的理解DOM结构标准:

所以说DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量,而反射性与存储型xss需要与服务器交互,这便是三者的区别。