忘什么是跨网站脚本 (XSS)?

想象一下,您突然无法登录到自己喜欢的网上商店了。此外,有人以您的名义发表了一些奇怪的评论,订购了一些东西。您是否还记得您点击过某网站评论区中的一个链接,去查看某人推荐的夹克衫?看起来您遭遇了跨站点脚本(也称 XSS)的案例。通过下面的阅读了解 XSS 的危害,以及人们为什么容易成为 XSS。

什么是跨站点脚本

在黑客将恶意代码注入到原本可靠的网站或应用时,便会发生跨站点脚本(又称 XSS)攻击。它利用了 HTML、JavaScript 或任何其他受浏览器支持的语言的弱点。这样的代码会在客户端侧而不是服务侧运行,因此它不会直接破坏网站,而是把目标瞄准了用户。根据 XSS 类型,用户可能因为点击链接或访问受感染的网站而激活恶意代码。

一旦激活,跨站点脚本攻击就可以将大量用户数据泄漏给黑客,注入木马,执行恶意重定向,通过窃取用户凭据来冒名顶替等等。

跨站点脚本的类型

反射型 XSS(Reflected XSS)

当用户点击指向漏洞网站的恶意链接时,就发生了反射型 XSS。此后,网页将脚本反射到受害者的浏览器,浏览器就会执行该脚本。网络罪犯就会劫持用户会话 cookie 并窃取他们的授权数据。

网站可能无法正确清除入站请求,让网络罪犯能够在链接中注入恶意脚本。网站所有者可能还未意识到他们的网站整被用于此类目的。

例如,Mary 拥有一家在线商店,Jane 经常使用这家。Jane 通过输入存储在授权 cookie 中的用户名和密码登录到该站点。Tom 是坏人。他发现 Mary 的网站包含一个漏洞,于是设计了一个恶意链接,并将放在伪装成诱人优惠的电子邮件将其发送给了 Jane。 Jane 点击链接并执行了脚本。然后,脚本感染了 Jane 的浏览器,并将与该网站的登录 cookie 关联的所有登录详细信息发送给 Tom。Tom 可以用 Alice 的身份登录在线商店,窃取她的账单信息并修改密码。

存储的 XSS

在存储的 XSS 中,黑客不仅将恶意脚本注入到了单个链接中,还将其植入了网站的服务器。他们将脚本隐藏在网站的特定区域,可以在这里无限期潜伏(比如说,评论区)。因此,只要用户访问了评论区,黑客就能够获取他们与该会话关联的全部凭据。如果反射型攻击就好像用鱼竿钓鱼,存储的 XSS 操作更像渔网,会影响到更多的用户。

例如,Alice 发现 John 的网站存在漏洞,于是在网站的评论区注入了恶意 HTML 标签。标签就留在那里。现在,当访客访问评论区时,标签将激活位于不同网站上的黑客脚本,向她发送来自他们授权 cookie 中的所有数据。然后,她可以登录网站,冒充每个受感染的用户。

基于 DOM 的 XSS

加载网站时,您的浏览器将创建页面的文档对象模型(又称 DOM)。和 HTML 页面及 JavaScript 之间的中介程序一样,它能够使页面变得动态并易于改动。在基于 DOM 的 XSS 情况下,有害的 JavaScript 代码会将数据写入 DOM。与反射型 XSS 非常相似,用户通过点击有害链接启动它。在这种情况下,黑客将恶意代码隐藏在代码更深处,因此仅仅通过重复检查 URL 无法对其追踪。您需要检查网站的代码才能识别它。

自我 XSS

自我 XSS 攻击并不依赖于漏洞网站,而是欺骗用户在自己的浏览器中注入恶意脚本。通常,网络罪犯会采用社交工程手段来做这件事。例如,他们可以说服用户在浏览器中输入代码,承诺这将允许他们访问另一个账户,从而获得额外的好处。但是,这让黑客窃取了受害者的账号。

跨站点脚本保护

XSS 攻击在代码级别上隐蔽得很好,因此您可能很长一段时间都不会注意到。更糟糕的是,漏洞网站所有者在发现 XSS 时通常为时已晚。不过,我们一些防范措施:

  • 始终使用最新且最可靠的安全软件,这类软件可能可以会自动阻止您进入恶意网站;

  • 更新您的浏览器,确保您使用的是最新版本。确认您的浏览器具有反 XSS 安全功能;

  • 不要打开可疑链接,即使这些链接第一眼看起来合法的。始终正确检查 URL,查看是否有任何不寻常的地方;

  • 如果注意到可疑之处,务必联系网站后台人员(例如:您无法使用您的常规凭据登录,您看到了一些不是您自己买的东西等)

Monica Webster
验证作者
Monica 是我们内容团队的灵魂人物。她的活泼和创造力让她的文章熠熠生辉。她喜欢研究各种安全相关问题,并给读者带来有用的提示。在不撰写技术文章的时候,她投身于艺术。