news 2026/5/30 10:33:45

【前端基础】04-XSS(跨站脚本攻击,Cross-Site Scripting)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【前端基础】04-XSS(跨站脚本攻击,Cross-Site Scripting)

文章目录

  • XSS(跨站脚本攻击,Cross-Site Scripting)
  • XSS 的危害
  • 开发者的 XSS 检查清单
  • 其他
    • 一个用户输入会影响其他用户?
    • 为什么用户不需要点击?
    • 为什么小明输入的,别人浏览网页也要加载?
    • 只有博客才会出现 XSS 问题吗?

XSS(跨站脚本攻击,Cross-Site Scripting)

XSS​ 是一种常见的 Web 安全漏洞,攻击者通过在网页中注入恶意脚本,当其他用户访问该网页时,恶意脚本会在用户的浏览器中执行。

XSS 的本质是 “浏览器信任了来自不可信来源的数据,并把它当作代码执行”。核心在于 “数据被误当作代码执行”。

XSS 的危害

窃取用户 Cookie 或会话信息。 伪造用户操作(如转账、发帖)。 窃取敏感数据(如密码、个人信息)。 劫持用户会话。

开发者的 XSS 检查清单

  • 所有用户输入是否经过后端校验?
  • 输出到 HTML 时是否转义了特殊字符?
  • 是否避免使用 innerHTML等危险 API?
  • 是否设置了 CSP 头?
  • Cookie 是否标记为 HttpOnly?
  • 是否对第三方数据也做了安全处理?

其他

一个用户输入会影响其他用户?

一个用户的恶意输入会威胁所有用户,是因为恶意内容被存在数据库里,每次其他用户访问页面时,后端都会把恶意内容读出来,浏览器误把它当作代码执行。
只要开发者做好输出转义,就能彻底切断这个攻击链。

XSS 最危险的地方:用户不需要任何点击,只要打开页面,恶意脚本就会自动执行。

为什么用户不需要点击?

因为 HTML 的渲染是自动的。
只要恶意代码被拼接到 HTML 中,浏览器就会在加载页面时自动执行。

不需要点击:恶意脚本直接嵌入在页面 HTML 中,浏览器加载页面时自动执行。 用户完全无感知:可能只看到页面正常显示,但后台脚本已经窃取了数据。 危害更大:因为用户不需要任何操作就会中招。

防御关键:永远不要直接把用户输入拼接到 HTML 中,一定要转义!

为什么小明输入的,别人浏览网页也要加载?

数据库是共享的:所有用户的评论都存在同一个表里。 查询逻辑是“按文章查”:显示文章时,会加载这篇文章下的所有评论。 恶意内容被当作普通数据查询出来:小明的评论和其他人的评论一样,被后端读取并输出到网页。 浏览器自动执行:恶意内容被拼接到 HTML 中,浏览器解析时自动执行。

根本原因:

博客系统的设计是公共可见的(所有评论对所有人可见)。 开发者没有对公共内容做安全处理(转义)。 导致一个人的恶意输入,能通过公共页面影响所有访问者。

解决方案:

不要改变“公共可见”的设计(否则博客就没意义了),而是做好输出转义,让恶意代码变成无害的纯文本。

只有博客才会出现 XSS 问题吗?

绝对不是!​ 博客只是一个最容易理解的例子,实际上任何允许用户生成内容并公开显示的系统​ 都可能出现这个问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 20:02:30

2025年中国专业摄像机行业综合概况

2025年中国专业摄像机行业综合概况 《2025年中国电影机市场调查研究报告》显示,从市场规模来看,专业摄影机行业展现出强劲的增长态势。中国电影机市场规模预计以年均复合增长率12.3%的速度扩张,2025年有望突破85亿元人民币。 而据贝哲斯咨询…

作者头像 李华
网站建设 2026/5/25 13:29:13

成都移动直连中国香港公网线路

成都移动直连中国香港公网线路 摘要 在不考虑IEPL、IPLC等国际专线的情况下,成都移动用户连接中国香港的公网线路选择对网络性能至关重要。本文通过深入的路由分析、性能测试和成本评估,系统对比CMIv2、CMIv1及各类绕路方案的技术特性,为成都…

作者头像 李华
网站建设 2026/5/24 18:42:58

java学习--LinkedList

一、LinkedList 是什么?LinkedList 是 Java 集合框架中 java.util 包下的一个实现类,它实现了 List、Deque 等接口,底层基于双向链表实现(JDK 1.6 及之前是循环链表,之后改为双向链表)。简单来说&#xff1…

作者头像 李华
网站建设 2026/5/20 20:24:56

TVS管并联提升通流为何反而导致钳位不稳?

在车载与工业电源设计中,工程师常通过并联TVS管提升通流能力以应对高强度浪涌。然而工程实测数据显示,简单并联往往导致钳位电压剧烈波动、器件提前失效,甚至保护功能完全丧失。问题根源在于TVS的半导体特性与电路寄生参数的深度耦合。 一、击…

作者头像 李华
网站建设 2026/5/24 1:56:41

1986-2023年并购SDC数据库数据

并购SDC数据库通过收集、整理和分析并购交易数据,为学术研究、企业战略决策、投资分析等提供关键数据支持。 收录了自1986年以来全球范围内的并购、收购、资产剥离等各类交易信息。该数据库提供交易金额、支付方式、溢价水平、双方财务数据及行业分类等丰富指标。 …

作者头像 李华
网站建设 2026/5/20 7:23:54

python基于flask框架的在线编程学习系统设计与实现

目录基于Flask框架的在线编程学习系统设计与实现摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Flask框架的在线编程学习系统设计与实现摘要 该系统采用Python语言与Flask轻量级框…

作者头像 李华