常见漏洞之XSS

一、XSS简介

XSS(Cross-Site Scripting,跨站脚本攻击)是一种常见的网络攻击方式,通过在网页中注入恶意脚本,当其他用户浏览这些网页时,这些嵌入的恶意脚本会在其浏览器上执行,从而进行各种恶意操作

二、XSS的原理和类型

  1. 原理:XSS攻击的基本思想是利用Web应用程序对用户输入的安全检查不足,将恶意代码注入到Web页面中。当其他用户浏览这些被篡改的页面时,恶意脚本就会在他们浏览器上执行。
  2. 反射型XSS:这种类型的XSS是通过将恶意脚本附加到URL参数中实现的。当用户访问这些包含恶意脚本的链接时,浏览器会执行这些脚本一次,之后不再执行。因此,它被称为非持久型XSS。
  3. 存储型XSS:这种XSS类型更为危险,因为它将恶意脚本永久存储在Web服务器上(如数据库或文件系统)。每当用户访问这些被篡改的页面时,都会加载并执行这些恶意脚本。
  4. 基于DOM的XSS:此类XSS不需要与服务器交互,而是在用户的浏览器内部通过JavaScript处理DOM(Document Object Model)时触发。攻击者通过更改DOM环境来执行恶意脚本。

三、XSS测试方式

1. div标签,常规插入

<script>alert(1)</script>

<img src="" οnerrοr=alert(1)>

2. textarea标签 闭合该后插入

</textarea><script>alert(1)</script><textarea>

</textarea><img src="" οnerrοr=alert(1)>

3.内容放在标签内,">闭合标签

"><script>alert(1)</script>

4. 过滤(),使用反单引号`

<script>alert`1`</script>

5. 过滤括号()和反单引号` 使用html实体编码来绕过

<img src="" οnerrοr=alert(1)>

6. 闭合注释符

--!><script>alert(1)</script>

7. 正则过滤auto/on开头及=结尾 > 换行绕过匹配

type="image" src="" onerror

=alert(1)

8. 换行或空格绕过正则匹配

</style ><script>alert(1)</script>

9.双写绕过

<sscriptcript>alert(1)</sscriptcript>

10. 转义符绕过

\");alert(1);//

四、XSS的危害

  1. 窃取信息:通过执行恶意脚本,攻击者可以窃取用户的Cookie、Session Tokens及其他敏感信息。
  2. 会话劫持:攻击者通过窃取Cookie可以冒充用户身份,执行未经授权的操作。
  3. 网络钓鱼:攻击者可以修改页面内容,重定向用户到假冒网站,诱导用户输入敏感数据。
  4. 传播恶意软件:通过XSS漏洞,攻击者可以在用户浏览器中植入恶意软件如木马、勒索软件等。
  5. 篡改网页内容:攻击者可以通过XSS篡改网页内容,比如修改路由器配置信息、繁殖XSS蠕虫等。

五、XSS的防御措施

  • 输入过滤:对用户提交的所有数据进行严格的验证和过滤,屏蔽掉可能导致XSS攻击的内容。
  • 输出转义:在服务器端输出用户提交的数据前,应对其做适当的转义处理,确保特殊字符不会被解析为脚本标签。
  • 使用CSP:通过设置HTTP的Content Security Policy响应头,限制哪些资源可以被加载和执行,有效防止恶意脚本注入。
  • HttpOnly Cookie:设置Cookie的HttpOnly属性,防止JavaScript读取Cookie,降低信息被盗用的风险。
  • 渗透测试:对Web应用程序定期进行渗透测试,发现并修补潜在的XSS漏洞
相关推荐
minglie16 分钟前
npm ali-oss库依赖冲突
前端·npm
xiaoshuaishuai89 分钟前
C# AI实现PR处理、单元测试
开发语言·c#·log4j
C++、Java和Python的菜鸟10 分钟前
第7章 Java高级技术
java·开发语言
LONGZHIQIN12 分钟前
C#基础复习笔记
开发语言·笔记·c#
CryptoPP22 分钟前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
可靠的仙人掌26 分钟前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php
学逆向的1 小时前
汇编——数据存储模式
开发语言·汇编·网络安全
zandy10111 小时前
体验家 XMPlus 批量操作与自动化工作流引擎:让大规模运营从手动执行走向规则驱动
大数据·运维·自动化
geovindu1 小时前
CSharp: Prototype Pattern
开发语言·后端·设计模式·.net·原型模式·创建型模式
湿韵轮回1 小时前
LangChain LCEL,用 | 串联AI的魔法语言
服务器·人工智能·langchain