跳转到主要内容

跨站脚本攻击

本文约需 2 分钟阅读

跨站脚本攻击 (XSS: Cross-Site Scripting) 是指向 Web 页面注入恶意脚本的攻击手法。攻击者植入的 JavaScript 在受害者的浏览器中执行,从而进行 Cookie 窃取、会话劫持、重定向到钓鱼页面等行为。在 2024 年的 OWASP Top 10 中,它作为注入攻击的一种位居前列,是 Web 应用程序漏洞中最常见的一类。

决定是否危险的不是值本身而是它被放置的位置

收到的值是否会引发问题,并不由值本身的外观决定。即使是同样的字符序列,它落在作为正文的位置、作为标记内属性的位置,还是被当作指示读取的位置,处理方式都不一样:在某处不具含义的字符,在另一处却会起到分隔符的作用。因此,在受理阶段一律加以整理的做法,在存在多个落点的构成中必然会向某一侧偏离。知道落点的只有把值写出之前的那一步处理,所以整理的位置只能放在出口而不是入口。其次,接收值的画面与展示值的画面并非同一个,这就形成了一段前提无法传达的区间。展示一侧并不知道接收一侧的设想,若它是在别的时期为别的目的而制作的,那么接收一侧所确定的约定就传不到那里。因此,在接收一侧动过手,并不意味着展示一侧是安全的。需要核实的对象数量,会按接收处的数量与展示处的数量相乘而增加。而且,读取发生的地方并不在保存该值的一方的管理之下,而是在观看者的手边。那个环境的构成从保存一方看不到,在那里读取了什么的记录也不会留在保存一方。留下的只有受理过该值这一记录,所以能够察觉的途径,仅限于事后重新查看受理的内容,或者从外部观测到的结果反向追溯。

XSS 攻击的流程

注入恶意脚本
受害者浏览页面
在浏览器中执行脚本
Cookie / 会话窃取

XSS 的种类

反射型 XSS 是包含在 URL 参数中的脚本被原样反映到页面的类型。存储型 XSS 是保存在数据库中的脚本被显示给其他用户的类型,留言板和社交媒体的评论区容易成为目标,会造成更严重的危害。 DOM 型 XSS 是源于客户端 JavaScript 处理的类型,由于不经过服务器而难以检测。

具体的危害场景

常见的误解是“XSS 只是改变外观的轻微攻击”。实际上,可以利用存储型 XSS 在电商网站的商品评论区嵌入恶意脚本,窃取所有查看该评论用户的会话 Cookie,从而发动严重的攻击。利用窃取的 Cookie,攻击者可以用受害者的账户购买商品或更改注册信息。此外,还发现了将其与钓鱼相结合、在正规网站上显示伪造登录表单的手法。

作为用户的对策

基本做法是保持浏览器为最新版本,不点击可疑链接。为每项服务使用各自独立的随机密码,即使因 XSS 攻击导致会话被劫持,也能防止危害扩大到其他服务。用浏览器扩展程序限制 JavaScript 的执行也是有效的对策。

相关术语

这篇文章对您有帮助吗?