跨站点脚本(XSS):它是什么以及如何修复?

https://www.wpexplorer.com/cross-site-scripting-wordpress/

原作者:安德鲁·威尔逊(Andrew Wilson)——WPExplorer.com 客座作者

.

什么是跨站脚本攻击(XSS)?

XSS 指的是一种网络攻击类型,即恶意脚本被注入到其他可信和受信任的网站中。

跨站脚本攻击在 HTML、Flash、ActiveX 和 CSS 中都有可能发生。但是,JavaScript 是网络罪犯最常见的目标,因为它是大多数浏览体验的基础。

JavaScript 是一种编程语言,可让你在网站上实现复杂的功能。网络上大多数大型和互动的网站都是用 JavaScript 构建的。Zyro 项目的市场经理 Domantas Gudeliauskas 说:“您可以(使用 JS)开发现场互动功能,游戏,或添加其他功能来更好地销售产品。”

JavaScript 在网络社区中十分受欢迎,因为它可以让你在网页上做几乎任何事情。这就是问题所在。网络犯罪分子可以使用 JavaScript 登录到您的网页背面并插入恶意脚本。

跨站脚本是如何工作的?

网络犯罪分子在 WordPress 网站上进行 XSS 攻击有两种方式。他们可以利用用户输入或者绕过同源策略。让我们来看看这两种方法,进一步了解跨站脚本。

操纵用户输入

网络犯罪分子进行 XSS 攻击的最常见方式是利用用户输入。大多数 WordPress 网站都有可供用户输入的字段,如搜索栏、评论框、登录页面和联系表单。输入字段通常是由 JavaScript 驱动的 WordPress 插件或主题在您的网站上启用的。

问题是,并不是所有的 WordPress 插件和主题都是 100% 安全的,实际上其中许多插件和主题都存在 XSS 漏洞。这对您而言意味着,网络犯罪分子可以利用 WordPress 输入字段中的漏洞来进行恶意活动。

理想情况下,网站搜索栏(或任何其他用户输入栏)应该只接受纯文本而不是命令作为输入。然而,WordPress 确实存在一个用户输入漏洞,它允许黑客在输入字段中输入执行代码,并将其发送到数据库中。

绕过同源策略

同源策略限制一个网页从其他网页中获取信息。在该政策下,网页浏览器允许第一个网页中的脚本访问第二个网页中的数据,但前提是它们共享同一来源。这有助于确保不会发生跨站请求。

该策略规定,如果你在同一个浏览器中打开了你的 Facebook 页面和网上银行,这两个网站就不能互相共享信息。然而,如果你打开了多个 Facebook 标签(共享同一来源),它们之间可以相互交换脚本和其他数据。

尽管采取了同源政策和其他安全措施来防止跨网站请求,但网络犯罪分子还是找到了利用会话 cookie 绕过该政策的方法。这是因为每次当你打开浏览器时,浏览器都会生成一个会话 cookie 来验证你是网站用户,并帮助你顺利地从一个页面移动到另一个页面。

会话 cookie 会存储登录凭证(包括您的 WordPress 网站的登录凭证)、信用卡信息、货运详情和其他敏感数据。运作方式如下。假设您要登录在线银行帐户。当您打开网站时,将生成一个会话 cookie。如果没有会话 cookie,则每次要切换页面时都必须重新登录在线银行帐户。

用户的浏览器存在漏洞并不罕见。而如果有漏洞的话,网络犯罪分子就会利用他们注入用户输入的代码来窃取会话 cookie。这样,黑客就可以窃取用户浏览器中打开的所有网站的 cookie。然后,这些 cookie 可以用来登录用户的账户,冒充用户,窃取财务数据。

为什么跨站脚本很危险?

跨站脚本是最常见的高危 WordPress 漏洞之一。XSS 攻击之所以如此常见,是因为与其他安全漏洞不同,它们很难解决。即使您有内置的保护措施,也很容易犯错误,使跨站脚本成为可能。只需在你的网页的 HTML 或 JavaScript 中犯一个错误,就会使你的网站容易受到跨站脚本攻击。

当攻击者找到利用 XSS 漏洞的方法时,他们可以窃取账户凭证、财务数据,并为网络钓鱼诈骗提供便利。他们还可以传播计算机蠕虫或远程访问用户的计算机。此外,XSS 攻击还使黑客能够执行以下操作:

  • 劫持用户账户
  • 传播恶意软件
  • 远程控制用户的电脑
  • 扫描和利用内网应用程序

XSS 攻击通常被认为比 SQL 注入的危险性小。但是,跨站点脚本与社会工程学结合使用时,可使网络罪犯发动高级且极为危险的攻击,包括植入木马、键盘记录、网络钓鱼、身份盗窃和跨站点请求伪造。

为了对抗 XSS 攻击,大型 IT 公司启动了特殊的漏洞赏金计划。许多组织都实施了这些计划,并向在脚本中报告 XSS 漏洞的用户提供补偿或表彰。通过这种方式,公司通过让其他开发人员识别其错误来投资网络安全。 Google 甚至发布了一款游戏,您可以在其中进行 XSS 错误的分发。

XSS 攻击的类型

跨站脚本攻击主要有三种类型:反射式、存储式和基于 DOM 的 XSS。为了更好地了解 XSS 的工作原理,我们来看看每种类型的 XSS 漏洞。

存储的跨站脚本

当用户输入的数据被存储在数据库、注释字段、访问者日志或其他目标服务器中时,就会发生存储式 XSS 漏洞(也称为持久性或 I 型)。然后受害者可以从 Web 应用程序中检索存储的数据(还没有被安全地呈现在浏览器中)。这样,当黑客执行攻击时,有效载荷对于浏览器的 XSS 过滤器是不可见的,并且受害者在访问受影响的页面时可能会意外触发有效载荷。

反射的跨站脚本

当 Web 应用程序在搜索结果、错误信息或任何其他响应中返回用户输入时,就会发生反射式 XSS 漏洞(也称为非持久性或 II 型)。在这种情况下,用户输入的数据会被反射,而不会被存储,从而使黑客能够注入恶意的 XSS 脚本。与存储式 XSS 不同,反射式 XSS 的目标是网站本身,而不是网站访问者。

基于 DOM 的 XSS

基于 TA DOM 的 XSS 漏洞(又称〇型)发生在 DOM(文档对象模型)而不是 HTML 的部分。读取恶意代码的源头可以是一个 URL 或 HTML 的特定元素。

如何防止跨站脚本攻击?

当您了解了 XSS 基础知识之后,让我们来看看防止 XSS 攻击的成熟方法。

有多种方法可以保护您的 WordPress 网站免受 XSS 攻击。如果您有高级技术专长,您可以添加代码片段来验证和净化用户输入。然而,如果您不熟悉 WordPress 的技术部分,最好将工作委托给技术团队,或者聘请专业人员为您采取这些措施。

同时,你可以做两件事来防止跨站脚本攻击。

安装一个安全插件

安装安全性 WordPress 插件是实现 WordPress 网站最终安全性的第一步。在选择安全插件时,请使用此清单作为参考,以确保该插件具有保证您网站安全所需的功能。

  •  能定期扫描您的网站,以防止恶意软件。
  • 能使用防火墙来阻止任何恶意的流量。
  • 能够实施 WordPress 的加固措施。
  • 允许您管理所有的 WordPress 更新。
  • 能够备份您的 WordPress 网站,所以在受到攻击时,您可以恢复您的网站。

安装一个专用插件

安装反 XSS 插件是防止跨站脚本的另一种方法。反 XSS 插件通过阻止跨站脚本攻击中常用的参数来工作。例如,这些插件可以保护用户输入字段的安全,例如您网站的评论表单、登录字段或搜索栏。


总之

39% 的 WordPress 漏洞都与跨站脚本问题有关。公司为了对抗跨站脚本攻击的后果,损失了数百万美元。为了避免针对您网站的 XSS 攻击,了解什么是跨站脚本,并采取预防措施非常重要。

为了保证你的网站不受跨站脚本攻击,你应该对你的输入字段进行验证和消毒。此外,您可以安装安全和专用的反 XSS 插件,以帮助您保持 WordPress 网站的安全。