什么是跨站脚本攻击

跨站脚本攻击

    • 1. 定义
    • 2. 跨站脚本攻击如何工作
    • 3. 跨站脚本攻击类型
    • 4. 如何防止跨站脚本攻击

1. 定义

跨站脚本攻击(Cross-site Scripting,通常称为XSS),是一种典型的Web程序漏洞利用攻击,在线论坛、博客、留言板等共享平台是跨站脚本攻击的典型目标。

攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的执行,从而达到窃取用户个人数据、弹出广告,甚至篡改网页内容等攻击目的。

与其他Web攻击类型不同,跨站脚本攻击是一种客户端代码注入攻击,恶意脚本在前端浏览器或Web应用程序等客户端侧执行,而非在后端服务器或数据库执行,最终受害者是访问用户

2. 跨站脚本攻击如何工作

跨站脚本攻击的基本原理是攻击者操纵存在漏洞的网站,向用户返回恶意脚本达成攻击目的,主要过程如下:

在这里插入图片描述

  • 攻击者发现存在漏洞的网站,然后利用漏洞在网页中注入恶意脚本。

凡是对用户输入限制不够严格的网站都可能发生脚本注入。恶意脚本通常是JavaScript ,当然也可以是Java、VBScript、ActiveX、Flash等。

  • 当用户访问网站时,恶意脚本被加载到浏览器中并触发执行。

触发恶意脚本执行的方法有很多种,例如,引诱用户点击链接,或当网页加载或用户鼠标停留在网页的特定元素上时自动触发脚本执行。

  • 恶意脚本访问浏览器留存的Cookie、会话令牌以及其他敏感信息,甚至可以改写页面内容,从而达成攻击目的。

攻击者通过窃取的用户Cookie就可以冒充用户,执行用户能够执行的操作,窃取用户身份信息、泄露用户文件等。另外攻击者还可以利用跨站脚本传播恶意软件、破坏网页内容、进行网络钓鱼等,实施更具破坏性的攻击。

3. 跨站脚本攻击类型

(1)反射型跨站脚本攻击

反射型跨站脚本攻击是最常见和最简单的攻击形式。所谓反射,是指此种类型的注入脚本必须被包含在发往Web服务器的请求中,然后Web服务器以某种方式反射到用户浏览器执行。也就是注入脚本作为客户端的请求提交给Web服务器,服务器解析后在响应消息中返回脚本由浏览器执行。因此攻击者需要使用钓鱼邮件、弹窗链接以及其他社会工程学方法引诱用户点击链接向Web服务器发出请求。

攻击者往往在合法的URL末尾添加恶意代码构造链接,例如:

https://example.com/index.php?user=<script>恶意代码</script>

用户点击此链接后,因为浏览器信任该网站,将执行恶意脚本代码。

从以上介绍可以看出,这种攻击类型Web服务器端无需存储注入脚本,直接通过HTTP GET或POST请求就可以完成攻击,实施比较简单。但是这种攻击方式需要由每个受害者触发才能发生攻击,往往也称为非持久型跨站脚本攻击。

(2)存储型跨站脚本攻击

存储型跨站脚本攻击也称为持久型跨站脚本攻击,是一种最具破坏性的跨站脚本攻击。注入的脚本永久存储在Web服务器上,如数据库、内存或文件系统中。只要注入脚本代码没有被清理,每次用户访问网页时都将加载恶意脚本。

存储型跨站脚本攻击一般发生在论坛、博客、留言板等允许用户共享内容的网站,如果网站存在漏洞,未严格校验用户输入内容就可能被攻击者利用。攻击者利用发帖、评论、修改个人信息等功能提交恶意脚本代码到Web服务器进行保存,那么只要访问对应网页的用户都会在不知情的情况下读取恶意脚本。

相对于反射型跨站脚本攻击,存储型跨站脚本攻击影响范围更大,危及所有访问者。当然这种攻击方式也更难执行,攻击者需要找到可以利用的漏洞。

(3)基于DOM的跨站脚本攻击

基于DOM(Document Object Model,文档对象模型)的跨站脚本攻击是一种更高级的攻击形式,通过篡改DOM注入恶意脚本。DOM提供对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来,当网页被加载时,浏览器会创建页面的文档对象模型DOM。Web程序的客户端侧JavaScript脚本可以对DOM进行编辑从而动态修改网页内容,也就是从DOM获取数据然后在用户本地执行。在这个过程中,如果数据处理不当,攻击者就可以将恶意脚本注入DOM,然后读取DOM数据时触发攻击。经常被利用的DOM对象包括URL (document.URL)、URL 锚点部分 (location.hash) 和 Referrer (document.referrer)。

基于DOM的跨站脚本攻击与反射型、存储型跨站脚本攻击有很大不同,整个攻击过程均在用户侧浏览器执行,无需Web服务器端进行解析和响应访问请求。这种类型的攻击比较难排查,WAF设备无法获取通信流量,可能难以发现攻击。

4. 如何防止跨站脚本攻击

从Web程序开发角度,需要遵循安全开发原则,采取措施防止跨站脚本攻击:

  • 对用户输入进行验证和过滤,验证输入是否符合预期格式,过滤掉一些特殊字符和标签(例如<script>)避免注入恶意脚本。
  • 对用户输入进行转义,也就是将用户输入呈现给用户之前确保对其进行转义,例如将“>”转义为“&gt”,这样可以防止接收到的输入中的一些字符被解释为可执行代码,使恶意脚本失效。
  • 对Cookie采取安全措施,例如设置HttpOnly Cookie属性防止JavaScript读取Cookie,避免用户身份验证令牌和敏感信息被窃取。
  • 使用HTTP的响应头CSP(Concent Security Policy,内容安全策略)限制哪些资源可以被加载和执行,例如限制JavaScript的来源,从而防止恶意脚本注入。
  • Web程序开发需要遵循OWASP的Cross Site Scripting Prevention Cheat Sheet(跨站脚本攻击预防备忘录),继承已有经验。
  • 对Web程序进行渗透测试,加固跨站脚本漏洞。

从访问网站的用户角度,需要有风险意识,避免遭受跨站脚本攻击:

  • 在浏览器中设置禁用脚本。
  • 避免点击电子邮件、论坛中的不明链接。
  • 及时更新软件及操作系统补丁。
  • 安装杀毒软件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构和算法-线索二叉树中的线索化和在线索二叉树中找前驱后继

线索二叉树的概念 找到某个节点得按照遍历得到的序列开始遍历才能遍历全部节点&#xff0c;非常繁琐 中序线索二叉树 线索二叉树的存储结构 先序线索二叉树 后序线索二叉树 三种线索二叉树的对比 即对应前驱后后继判断标准不同 小结 二叉树的线索化 用土办法找中序前驱 当…

Prefix-Tuning 论文概述

Prefix-Tuning 论文概述 前缀调优&#xff1a;优化生成的连续提示前言摘要论文十问实验数据集模型实验结论摘要任务泛化性能 前缀调优&#xff1a;优化生成的连续提示 前言 大规模预训练语言模型(PLM)在下游自然语言生成任务中广泛采用fine-tuning的方法进行adaptation。但是f…

android studio安装SDK时无法勾选

这两天帮助学妹安装android studio安装SDK时无法勾选&#xff0c;记录一下最终解决办法。头大。 核心 360 问题 网上所有方法都尝试了包括挂梯子&#xff0c;改hosts&#xff0c;盘符权限等等。 最终解决下载360 使用这两个&#xff0c;DNS注意要用8.8.8.8的 成功解决

超硬核解析Mybatis动态代理原理!只有接口没实现也能跑?

文章目录 前言Mybatis dao层两种实现方式的对比原始Dao开发原始Dao开发的弊端 基于Mapper动态代理的开发方式 Mybatis动态代理实现方式的原理解析动态代理调用链路解析先给出链路调用结果1、调用方法的开始&#xff1a;session.getMapper2、DeaultSqlSession的getMapper3、Conf…

Selenium自动化测试:通过cookie绕过验证码的操作

验证码的处理 对于web应用&#xff0c;很多地方比如登录、发帖都需要输入验证码&#xff0c;类型也多种多样&#xff1b;登录/核心操作过程中&#xff0c;系统会产生随机的验证码图片&#xff0c;进行验证才能进行后续操作 ​解决验证码的方法如下&#xff1a; 1、开发做个万…

西瓜书-主要符号表

主要符号表 LaTeX符号说明How to read letter?\mathit{x}标量\boldsymbol{x}向量\mathrm{x}变量集\mathbf{A}矩阵\mathbf{I}单位阵\mathcal{X}样本空间或状态空间calligraphic X\mathcal{D}概率分布Ɗ calligraphic D\mathit{H}数据样本&#xff08;数据集)\mathcal{H}假设空…

基于OpenCV的手势1~5识别系统(源码&环境部署)

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义&#xff1a; 随着计算机视觉技术的快速发展&#xff0c;手势识别系统在人机交互、虚拟现实、智能监控等领域得到了广泛应用。手势识别系统可以通过分析人体的手势…

LTO编译器优化介绍以及开启方法

文章目录 LTO介绍LTO 开启方法 LTO介绍 LTO&#xff08;Link Time Optimization&#xff0c;链接时优化&#xff09;是一种在链接阶段进行优化的技术。传统的编译过程中&#xff0c;编译器仅能对单个编译单元进行优化。LTO 允许编译器看到跨编译单元的代码&#xff0c;从而进行…

jquery 判断是手机端还是电脑端

判断为手机端&#xff1a; var sUserAgent navigator.userAgent.toLowerCase(); var bIsIpad sUserAgent.match(/ipad/i) "ipad"; var bIsIphoneOs sUserAgent.match(/iphone os/i) "iphone os"; var bIsMidp sUserAgent.match(/midp/i) "mid…

【开源】基于Vue和SpringBoot的快递管理系统

项目编号&#xff1a; S 007 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S007&#xff0c;文末获取源码。} 项目编号&#xff1a;S007&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快…

【读书笔记】微习惯

周日晚上尝试速读一本书《微习惯》&#xff0c;共七章看了下目录结构并不复杂&#xff0c;计划每章7-8分钟读完&#xff0c; 从20:15-21:00。读的时候&#xff0c;订下闹钟&#xff0c;催促着自己的进度。边读边记了一些要点和微信读书里面的划线。 第六章实践内容最为丰富&…

“此应用专为旧版android打造,因此可能无法运行”,问题解决方案

当用户在Android P系统上打开某些应用程序时&#xff0c;可能会弹出一个对话框&#xff0c;提示内容为&#xff1a;“此应用专为旧版Android打造&#xff0c;可能无法正常运行。请尝试检查更新或与开发者联系”。 随着Android平台的发展&#xff0c;每个新版本通常都会引入新的…

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式&#xff0c;平级和上下级&#xff0c;WVP目前支持向上级级联。 测试环境 测试平台上级&#xff1a;192.168.10.209&#xff08;Alam centos8&#xff09; 测试平台下级&#xff1a;192.168.10.206&#xff08;ky10_x86&#xff09; 下级…

KDE环境文件夹user-dirs为英文

KDE环境文件夹user-dirs 修改KDE主页文件夹为英文 该文件路径 ~/.config/user-dirs.dirs打开后会发现里面的内容如下 # This file is written by xdg-user-dirs-update # If you want to change or add directories, just edit the line youre # interested in. All local …

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

文章目录 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表140.1 相关概念140.2 操作步骤140.3 维护建议 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表 为了保证数据库的有效运行&#xff0c;数据库必须在插入/删除操作后&#xff0c;基于…

Ant Design Pro 框架设置API Token拦截器的功能

分享记录一个解决方法&#xff0c;希望对大家有帮助。 找到文件&#xff0c;然后定义一个方法。最后调用一下即可。 代码我也给你贴上了。 // 获取token 拦截方法 const setTokenRequest (config: any) > {const token 30|eh5GNXWRe5rO4XLjbbnqy132RABfiKqI338EoIhqc790a…

思维模型 反馈效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。反馈促进改进。 1 反馈效应的应用 1.1 反馈效应在营销中的应用 1 “可口可乐与百事可乐之战” 在 20 世纪 80 年代&#xff0c;可口可乐公司是全球最大的饮料公司之一&#xff0c;其市场…

利用reddit的api进行爬虫

1 介绍 Reddit是一个社交新闻聚合网站&#xff0c;用户可以发布、评价和讨论各种话题。Reddit的内容涵盖了广泛的主题&#xff0c;可以从中获取大量的文本数据进行情绪分析。 2 注册 2.1 注册reddit 你需要先注册一个reddit的账号。 2.2 注册api https://www.reddit.com/…

文科专业和编程基础薄弱的女孩子做软件的神器——aardio学习资源入门

相关资源 aardio 开发桌面应用&#xff0c;这几点必须要掌握&#xff01; - 星安果的文章 - 知乎 https://zhuanlan.zhihu.com/p/430970376 从使用者角度来为aardio编程软件说句话 - popdes的文章 - 知乎 https://zhuanlan.zhihu.com/p/461290014 故事和情怀 优点 1 快捷 2 …

HarmonyOS开发(九):数据管理

1、概述 1.1、功能简介 数据管理为开发者提供数据存储、数据管理能力。 它分为两个部分&#xff1a; 数据存储&#xff1a;提供通用数据持久化能力&#xff0c;根据数据特点&#xff0c;分为用户首选项、键值型数据库和关系型数据库。数据管理&#xff1a;提供高效的数据管…