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

文章目录
  1. 什么是跨站脚本攻击(XSS)?
  2. 跨站脚本是如何工作的?
    1. 操纵用户输入
    2. 绕过同源策略
  3. 为什么跨站脚本很危险?
  4. XSS攻击的类型
    1. 存储的跨站脚本
    2. 反射的跨站脚本
    3. 基于DOM的XSS
  5. 如何防止跨站脚本攻击?
    1. 安装一个安全插件
    2. 安装一个专用插件
  6. 总之
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网站的安全。