当前位置: 首页 > news >正文

常见漏洞之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漏洞

http://www.lryc.cn/news/387741.html

相关文章:

  • Python变量的命名规则与赋值方式
  • 昇思25天学习打卡营第7天|网络构建
  • 扩展阅读:什么是中断
  • git 命令学习之branch 和 tag 操作
  • 如何理解 IEEE 754 单精度浮点型能表示的最小绝对值、最大绝对值
  • LeetCode 算法:二叉树的右视图 c++
  • Java 并发编程常见问题
  • 网络基础:静态路由
  • 库存管理系统基于spingboot vue的前后端分离仓库库存管理系统java项目java课程设计java毕业设计
  • 【ArcGIS AddIn插件】【可用于全国水旱灾害风险普查】全网最强洪水淹没分析插件-基于8邻域种子搜索算法-有源淹没分析算法
  • ==和equals的区别(面试题)
  • 本地项目上传到GitHub上(李豆)
  • 碧海威L7云路由无线运营版 confirm.php/jumper.php 命令注入漏洞复现(XVE-2024-15716)
  • redis实战-添加商户缓存
  • SQL游标的基本使用方法与示例
  • 还不知道工业以太网和现场总线区别???
  • 量化交易 - 策略回测
  • Java--选择排序
  • Python基础之模块和包
  • 基于SpringBoot漫画网站系统设计和实现(源码+LW+调试文档+讲解等)
  • Mysql----表的约束
  • 如何用 PHP 实现一个自定义爬虫框架
  • 【机器学习】机器学习的重要方法——强化学习:理论,方法与实践
  • Linux磁盘监控思路分析
  • pc端制作一个顶部固定的菜单栏
  • ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合
  • 使用Java连接数据库并且执行数据库操作和创建用户登录图形化界面(2)
  • socket编程常见操作
  • springcloud-config git配置源加载(部署公钥问题)
  • 华为OD机考题HJ24 合唱队