分类: WordPress安全

  • 如何强化WordPress并修复权限错误

    如何强化WordPress并修复权限错误

    WordPress的美妙之处在于您可以随心所欲地深入兔子洞。如果您的技术知识为零,那么您在指尖就能拥有与经验丰富的专业编码员相同的相对能力。虽然有时,当您需要深入研究WordPress的后端以修复权限错误时,它有助于了解您在做什么。

    简单来说,如果您的权限错误,您将无法访问某些文件或文件夹。事实上,更正确的说法是服务器不允许任何人访问这些文件。解决方法是深入了解,进行一些更改,然后退出。

    在接下来的几分钟内,我们将在WordPress中查看以修复权限错误。更重要的是,我们将为您提供一切所需的一切,让您做好它。

    什么是“权限”(以及为什么需要它们)

    权限的电梯音调是它们保护您的文件和文件夹免受未经授权的访问。更复杂的是,每个文件和文件夹都有一定的权限级别。如果诸如浏览器之类的客户端试图打开或以其他方式使用该文件,服务器将检查是否具有这样做的正确权限。

    如果客户端签出,服务器会将文件ping到浏览器作为HTTP请求的一部分。相反,如果客户端没有正确的权限,你会得到一个错误。

    在大多数情况下,您不会遇到权限错误。这是因为系统的工作是将访问权限限制为只允许需要文件或文件夹的人访问。如果您没有文件权限,您的WordPress网站以及您的服务器可能会遇到恶意攻击的真正麻烦。

    您需要什么来帮助WordPress修复权限错误

    好消息是您不需要很多东西来重新强化WordPress并修复权限错误。事实上,您只需要一个工具:安全文件传输协议 (SFTP) 客户端。市场上有一些这样的,但有三个我们最喜欢。

    对于初学者来说,FileZilla是通过SFTP访问您的站点的标准工具,尽管Cyber​​duck具有同样多的可用性和功能:

    cyberduck

    如果您想要一个还可以为您做很多其他事情的高级SFTP解决方案,Panic’s Transmit是一个很棒的工具:

    Panic's Transmit

    这可以帮助连接到WordPress并修复权限错误、从云存储中推送和提取数据等等。

    无论您选择哪种SFTP工具,在打开网站的引擎盖之前,您还需要检查以下内容是否到位:

    • 对您的服务器的管理访问权限。简而言之,如果您在尝试修复权限错误时遇到权限错误,您将陷入困境!
    • 了解如何使用SFTP,尽管您在这里不需要高深的技能 – 足以访问您的服务器和编辑文件设置。当然,有很多方法可以在您的WordPress服务器上使用SFTP

    此外,虽然了解文件权限如何与WordPress一起工作很有用,并且会加快修复所需的时间,但现在没有必要。本文将向您展示要更改哪些设置以及如何更改,并且为了修复错误,您不需要知道血腥的细节。

    我们还建议您对您的网站进行最新且干净的备份,以防您所做的更改无法按照您的需要进行。如果你“tank”你的网站,你会很高兴有一个新的备份存在。

    如何强化WordPress并修复权限错误

    当您希望安装主题或插件时,会出现权限错误。因为WordPress无法访问该文件,所以您需要帮助它。

    我们将通过四个步骤来做到这一点:

    1. 使用SFTP登录您的服务器。
    2. 确保文件具有正确的权限。
    3. 查看您的文件夹是否也具有正确的权限。
    4. 检查一堆特定文件是否具有唯一权限集。

    好消息是您可以使用前几个步骤中的指导来执行其余步骤。另外,请注意,我们在这些步骤中使用Cyber​​duck,但每个SFTP客户端都有自己的方法来修改文件权限。如果您使用与我们不同的东西,请查看您的文档以了解确切的功能。

    首先,您需要进入您的服务器。

    1. 通过SFTP访问您的服务器

    您的第一步是登录您的服务器。为此,您需要您的SFTP凭据。通常,您可以在主机控制面板中找到这些:

    sftp凭据

    您也可以在托管公司的电子邮件中找到它们,因此也可以在您的收件箱中搜索这些登录详细信息。

    一旦你有了它们,启动你的SFTP客户端,并寻找打开一个新连接的选项——它可能在你的客户端中被称为不同的东西:

    cyberduck登录界面

    从这里,使用您的凭据填充字段。不过,如果您可以选择,请确保您使用的是显式SFTP连接。一些工具没有相同数量的潜在连接,并且可能默认为SFTP。不过,请仔细检查您是否能够:

    选择连接协议sftp

    登录后,您将进入您的目录。这将包含您的所有站点,您的下一个任务是选择正确的WordPress站点并修复其中的权限。

    站点本身可以​​有多种名称—— public_htmlrootwww或站点名称。找到您的站点后,双击进入该文件夹。里面是你所有的WordPress核心文件。从这里,您需要选择文件和文件夹,并设置正确的权限。

    2.为文件设置正确的文件权限

    一旦您可以访问站点的根目录,您就可以开始设置正确的权限。在我们向您展示如何操作之前,让我们先来看看文件权限的世界。

    文件权限设置快速入门

    权限包含三个部分:读取写入执行。反过来,这些让WordPress从文件中获取数据,向其中添加数据,并对其运行其他操作。

    显示每个文件的权限的传统方式是通过一组三位数字。每个数字代表显式用户组(所有者、组或其他用户)的特定操作(读取、写入或执行)。

    我们将使用这些三位代码提及文件权限,大多数SFTP客户端也会向您展示它们的含义。这意味着您可以选择使用其中一种方法,同时引用另一种方法。

    选择您的文件和更改权限

    准备好后,选择服务器中的每个文件,并确保取消选择文件夹。从这里,您需要查找您的文件权限设置。在Cyber​​duck中,您可以右键单击并转到信息屏幕,但在FileZilla中,您可以选择文件权限。无论如何,这将弹出一个包含三位数字和一组复选框的框:

    文件权限

    您的大多数WordPress文件都应该具有644权限。将其键入框中后,还单击选项以递归应用更改。同样,它可能会在您选择的客户中说出不同的内容。

    单击以确认后,这是一项不碍事的任务。接下来是处理您的文件夹。

    3.为文件夹设置正确的权限

    要设置文件夹的文件权限,请使用与上一步相同的过程。这一次,您将文件替换为文件夹。

    首先,选择根目录中的每个文件夹,然后打开文件夹权限设置。这一次,您要755用作权限。再次确认您的更改,这就是几乎完成的任务。

    4.确保某些特定文件具有唯一权限

    在结束之前,一些WordPress和服务器文件的权限与其他文件不同。具有不同权限设置的主要WordPress文件是wp-config.php。因为这是一个重要文件,所以您要确保它几乎是只读的。不过应该有一些许可元素,所以按照前面的步骤,将权限更改为440.

    这意味着没有人可以写入或执行该文件。不过,您可能会遇到一些服务器和/或插件设置的问题。如果是这种情况,请开始打开文件,直到您不再看到任何错误。首先尝试444,然后600,下一步640,如果解决了问题,请644使用。

    您可能还希望将index.php文件设置为444,因为它是另一个重要的文件,它受益于更多限制。不过,644这里也很好。

    WordPress.org网站上有一篇关于文件权限以及如何为特定文件设置权限的综合文章。如果您想知道如何设置特定文件或文件夹,请查看本文,您应该会找到答案。

    当然我们也有关于WordPress权限的相关文章:《WordPress权限:了解它们以及其最佳设置》,推荐大家进一步深入阅读。

    小结

    就像俱乐部外的任何天鹅绒绳索一样——如果你的名字没有被记录下来,你就不会进来。WordPress有自己的VIP部分——你网站的服务器——如果浏览器或用户没有正确的权限来访问里面的文件,它被拒绝了。

    在这篇文章的整个过程中,我们一直在WordPress的后台修复权限错误并让损坏的网站重新运行。最好的方法是使用SFTP,因为所涉及的步骤不需要时间。您只需要确保文件和文件夹具有特定的权限设置,您的网站就会恢复正常。

  • WordPress恢复模式(Recovery Mode)的终极指南

    WordPress恢复模式的终极指南

    如果您是WordPress的普通用户,您很可能会不时遇到错误。严重错误、技术困难或可怕的WordPress白屏死机可能会毁掉您的一天并使您的网站离线,让毫无戒心的访问者想知道发生了什么。这不仅会花费您宝贵的点击次数,而且可能会使访问者永远不会返回您的网站。由于WordPress恢复模式,这些问题是短暂的并且更容易修复。

    什么是WordPress恢复模式?

    WordPress 5.2发布之前,您通常会看到WordPress白屏死机。自2019年5月引入WordPress恢复模式以来,当发生不良情况时,用户通常会在其网站上看到错误消息。当检测到问题时,WordPress会向管理员发送一封电子邮件,其中包含登录链接和有关错误的详细信息。

    WordPress恢复模式通知邮件

    您可能想知道是什么导致了这些消息。大多数情况下,这是由于代码损坏或插件更新严重错误造成的。其他可能的原因是插件冲突、主题问题或您可能已实现的自定义代码。无论是什么原因,WordPress都能很好地识别何时出现问题并让您知道它。

    WordPress进入恢复模式时会发生什么?

    发生错误时,WordPress将尝试识别问题并将其隔离。如前所述,会生成一封电子邮件并将其发送给站点管理员。接下来,WordPress将禁用错误代码,以便您可以登录到您的站点来纠正问题。请注意,恢复模式不会为您修复您的网站。它只允许您访问该站点,以便您可以更正它。世界其他地方都会看到错误消息,因此尽快解决问题至关重要。

    您可以在恢复模式下做什么?

    恢复模式最好的一点是能够在不需要FTP的情况下解决错误。这在处理插件或主题问题以及修复一两行损坏的代码时非常有用。当您登录到恢复模式时,您可能会直接在WordPress仪表盘中了解您的问题。恢复模式由管理栏右上角的一个大红色按钮指示。

    您可以修复有问题的插件

    在此示例中,您将看到错误源于插件未正确加载。仪表盘显示描述问题的错误消息,并为您提供修复它的链接。

    恢复模式界面

    单击提供的链接后,您将被重定向到显示问题插件的新屏幕,以及详细说明遇到的特定问题的代码行。在此示例中,您有两个选择。停用插件,或继续使用它。显然,安全的选择是停用插件。然后,您将对发生的问题进行故障排除,并采取措施进行修复。

    WordPress恢复模式问题

    解决主题问题

    此示例为我们提供了一个严重错误,其中包含有关导致错误的更具体的详细信息。基本上,我们在主题的functions.php文件中删除了一个分号,以触发恢复模式。

    主题报错提示

    WordPress做了它的事情并生成了一封电子邮件,让我们知道存在问题。如屏幕截图所示,我们提供了一个链接来登录以纠正问题。此外,WordPress让我们确切地知道错误是什么。

    主题错误邮件提醒

    登录后,我们发现我们的主题存在问题。WordPress提示我们点击进入主题屏幕。

    主题错误链接

    在这一点上,我们知道问题是什么(因为是我们造成的),并纠正它。但是,如果您发现自己处于类似情况,您的下一步行动应该是禁用您的主题,检查您的functions.php文件是否有错误,并在查找导致问题的代码时启用默认主题。

    安全模式是否与恢复模式做同样的事情?

    简而言之,没有。Divi等主题通常使用安全模式来禁用插件、自定义脚本和子主题。此外,一些插件(例如WP Safe Mode)提供相同的功能。恢复模式和安全模式的区别很简单。在恢复模式下,导致问题的特定插件或主题被禁用,而不是所有主题和插件。

    为什么需要WordPress恢复模式?

    WordPress恢复模式会派上用场有几个原因。首先,它允许您通过在站点上显示不同类型的错误消息来识别站点错误。无论是严重的错误消息、技术难题,还是只是 PHP 错误,恢复模式都可以证明对解决它们很有用。另一个可能的原因是您当前版本的PHP不支持您的主题或其中一个插件。

    WordPress恢复模式中显示的常见错误

    大多数情况下,WordPress会通过向您提供错误消息来提醒您注意问题。您可能会看到各种类型的消息,因此我们将帮助您识别它们以及每种消息的可能原因。

    1. 严重错误信息

    WordPress严重错误信息

    WordPress恢复模式中的严重错误消息通常包含以下消息:

    There has been a critical error on your website. Please check you site admin email inbox for instruction.

    严重错误信息常见原因

    您收到此错误消息的原因可能有很多。大多数时候,它可以缩小到几个。让我们探讨最常见的原因。

    有问题的插件

    可在WordPress中使用的大量插件是其最佳功能之一。话虽如此,它可能是一把双刃剑。在为您的站点安装和使用新插件时,通常最好进行研究。有些已过时、不再受支持或与最新版本的WordPress不兼容,应避免使用。然而,即使是最好的计划有时也会被毁掉。在这种情况下,恢复模式是您的朋友。

    自定义代码出错

    即使是经验丰富的WordPress开发人员有时也会犯错误。WordPress很棒,因为您可以自定义它以满足您的需求。有很多机会可以编写自定义脚本、创建自定义插件或简单地使用一点javascript来增强主题的功能。有时,只需要一个缺少的分号就可以让整个事情崩溃。使用恢复模式,当您犯错时,您不必担心从头开始构建。问题通常会被识别出来,有时甚至可以精确到代码行,这样您就可以修复问题并迅速恢复运行。

    不完整的或过时的主题

    主题非常适合让您的WordPress从人群中脱颖而出。像Divi这样的主题允许您广泛地自定义您的网站,从而提供无穷无尽的设计选项。市场上有1000种主题。有时,当主题更新时,电线会交叉,您的主题可能会中断。此外,在某些情况下,您安装了主题并忘记更新它。如果 WordPress 发布了与您的主题不兼容的更新版本,您可能会收到技术困难错误消息。

    2. 技术问题错误信息

    技术问题错误信息

    您可能需要恢复模式的另一个原因是当您收到可怕的技术问题错误消息时。WordPress恢复模式中的技术困难错误消息通常包含以下简单但非常令人不安的消息:

    The site is experiencing technical difficulties.

    技术问题错误信息常见原因

    虽然您看到此问题的原因可能有很多,但最常见的问题是主题或插件冲突。其他可能的原因可能是您的网站被注入了恶意软件。

    与插件的主题冲突

    有时在插件更新期间,可能会与您的主题发生冲突。著名的主题创建者通常会很好地保持他们的框架是最新的。但是,在某些情况下,主题更新还不够。如前所述,明智的做法是选择具有良好声誉且定期更新的插件。选择未经您当前版本的WordPress测试的插件可能会导致您的网站出现错误。

    插件与另一个插件冲突

    与主题冲突类似,插件也可能与其他插件不兼容。在安装新插件之前做你的研究。检查支持渠道以及该特定插件的 WordPress.org 论坛页面,以在下载前了解潜在问题。在考虑新插件时,您应该考虑WordPress插件库的其他选项。如果您是闪电博用户,我们所开发的插件是寻找为您的网站添加新功能的好地方。此外,当您的网站需要新功能时,其他高级插件产品也是不错的选择。

    您的网站已被黑客入侵

    让您的网站被黑客入侵可能是网站所有者或开发人员可能遇到的最可怕的情况之一。您可能会被锁定在您的网站之外,您的网站可能会被重定向,或者它可能被不良行为者用于邪恶目的。当您的网站被黑客入侵时,可能会运行脚本并引发错误,从而提醒WordPress存在它们。那时恢复模式将启动。

    3. PHP代码错误

    有时您不会看到严重或技术困难的错误消息。您的屏幕上可能只有几行PHP。在这种情况下,这通常是由您的主题问题引起的。您的主题可能已过时、缺少代码或您实现的自定义代码导致冲突。

    4. 你的PHP版本有问题

    要评估的另一件事是在您的站点上运行的php版本。有时,通过切换到不同的版本可以轻松纠正问题。例如,如果您的主题已过时且没有可用的新版本,则将php回滚到旧版本可能会解决问题。但是,WordPress不建议回滚超过7.4。这样做会使您的站点容易受到安全问题和性能下降的影响。

    您还可以使用WordPress的内置站点健康功能检查您的WordPress站点健康状态。检查 WordPress 的站点运行状况,从仪表盘导航到工具 > 站点运行状况。这应该显示您是否使用过时的PHP版本,以及其他关键问题和建议。

    站点健康

    如何进入WordPress恢复模式

    基本上可以通过三种方式访问​​恢复模式:

    1. 访问WordPress恢复电子邮件。这需要单击WordPress恢复模式电子邮件中提供的链接。
    2. 通过wp-config.php手动访问WordPress恢复模式。这包括通过FTP将一行PHP代码添加到您的wp-config.php文件中,如果您无权访问您的管理员电子邮件。
    3. 手动添加恢复URL。这涉及手动重新创建恢复模式URL。

    让我们更详细地探讨这些方法。

    访问WordPress恢复电子邮件

    确保恢复电子邮件的第一步是确保您的管理员电子邮件地址在WordPress中正确。您需要在遇到问题之前执行此操作,因为您可能无法访问wp-admin仪表盘。拥有不正确的管理员电子邮件将阻止您以简单的方式使用恢复模式。

    要检查这一点,请登录您的WordPress站点并导航到设置。接下来,单击常规。查找WordPress管理电子邮件地址。如果您的电子邮件地址正确,您应该能够在出现问题时收到恢复电子邮件。

    WordPress管理员邮箱地址

    发生错误时,WordPress会向您发送一个电子邮件地址,提醒您网站上的问题。电子邮件中包含的链接会将您带到恢复登录屏幕。登录后,您将可以看到有关错误的详细信息 – 使您能够纠正问题。

    如何手动访问WordPress恢复模式

    WordPress恢复模式是一项很棒的功能,但是如果您无法访问管理员电子邮件并需要更改它怎么办?有时您无法访问网站后端来更改电子邮件,因此您需要尝试不同的方法来启用恢复模式。

    编辑您的Wp-config.php文件

    对于此示例,您将使用FileZilla等FTP程序来编辑wp-config.php文件。您需要定义一个电子邮件地址,以便WordPress知道将警报消息发送到哪里。我们将使用FileZilla向您展示如何编辑文件。

    首先,打开FileZilla并与您的服务器建立连接。您可以通过大多数WordPress托管服务提供商找到并生成SFTP凭据。获得建立连接所需的信息后,单击站点管理器

    FileZilla站点管理

    出现对话框时,单击当前站点,或单击新站点添加新站点。从下拉菜单中选择SFTP ,然后输入您的主机端口。接下来,从登录类型菜单中选择正常,填写您的用户密码信息,然后单击连接

    FileZilla服务器连接

    通过选择/public-html/文件夹导航到wp-config文件。选择wp-config.php文件,然后单击view/edit

    编辑wp-config.php文件

    接下来,将以下代码行添加到文件中。请务必将you@yoursite.com更改为您的电子邮件地址。

    define( ‘RECOVERY_MODE_EMAIL’, ‘you@yoursite.com’ );
    define( ‘RECOVERY_MODE_EMAIL’, ‘you@yoursite.com’ );
    define( 'RECOVERY_MODE_EMAIL', 'you@yoursite.com' );

    最后,点击保存。添加代码告诉WordPress将恢复电子邮件发送到您在WordPress设置中指定的管理员电子邮件地址。请记住,如果系统在当天已经生成了一封电子邮件,那么您需要等待24小时才能收到另一封电子邮件。这并不总是适合你,所以让我们探索另一种方式。

    手动添加恢复URL

    如果您不能等待24小时让WordPress发送恢复电子邮件,可以尝试另一种方法。您可以手动生成恢复链接以访问该站点。

    在浏览器中打开您网站的主页。接下来,将其添加到URL后面。

    /wp-login.php?action=entered_recovery_mode

    我们想提一下,这在我们尝试进行此修复的大多数网站上都有效。话虽如此,如果您使用插件或其他方法来屏蔽您的wp-admin登录URL,则需要使用以下链接的变体。请务必将/custom-login/替换为您的自定义登录URL后缀。

    /custom-login/?action=entered_recovery_mode

    当您手动重新创建恢复URL时,您可能不会收到那些方便的错误来告诉您问题出在哪里。在这种情况下,您需要设置故障排除上限并开始工作。

    如何退出恢复模式

    退出恢复模式非常容易。WordPress提供了几个链接供您退出。首先是单击wp-admin面板顶部栏中的红色退出恢复模式按钮。其次,是通过单击仪表盘中错误消息旁边的链接。

    退出WordPress恢复模式

    请务必注意,您应该确保在退出恢复模式之前已更正任何问题。如果您在没有解决问题的情况下这样做,您的网站将继续显示错误消息,使访问者无法访问您的网站。

    如果您无法退出恢复模式怎么办?

    在极少数情况下,即使解决了问题,您也可能无法退出恢复模式。在这些情况下,您需要启用调试以尝试确定问题所在。有几种方法可以解决这个问题。

    首先,您可以编辑wp-config.php文件。为此,请通过FTP打开您的wp-config.php文件。第一行应该已经存在。您只需要将false更改为true。需要添加第二行。这基本上告诉WordPress使调试日志可见。如果您仍然无法访问网站的后端,则此方法很有价值。

    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( ‘WP_DEBUG’, true );
    define( ‘WP_DEBUG_LOG’, true );
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );

    当您确实可以访问后端时,最好使用第二种方法。WordPress存储库中有几个调试插件可用。我们推荐的一项是运行状况检查和故障排除。它会让您对站点中发生的事情有一个很好的了解,并可以帮助您解决问题。

    最后一个选项是在您的托管服务提供商中使用调试模式。

    小结

    WordPress恢复模式是一项很棒的功能,可帮助您识别和纠正网站上的问题。大多数情况下,问题可以很容易地追溯到插件、主题冲突或自定义代码中的错误。但是,可能存在需要额外故障排除的情况。如果我们前面提到的方法对您不起作用,请尝试通过一些常见的WordPress错误排除故障,以使您的网站从死亡边缘恢复。

  • 恶意软件的类型:了解如何更好地保护自己

    恶意软件的类型:了解如何更好地保护自己

    在当今高度互联的世界中,网络犯罪正在蓬勃发展,恶意软件是其最流行的武器。

    恶意软件有多种形式并具有不同的安全威胁级别。黑客使用它们来拦截设备、数据泄露、摧毁整个企业、造成严重的金钱损失,甚至摧毁整个公司。

    那么,究竟什么是恶意软件,你如何对抗它呢?

    在这份详尽的指南中,我们将解释有关恶意软件的所有知识、其类型、如何检测和删除它,以及如何保护自己免受最恶毒的恶意软件攻击。

    1. 什么是恶意软件?
    2. 恶意软件的工作原理
    3. 不同类型的恶意软件
    4. 如何检测恶意软件
    5. 如何摆脱恶意软件
    6. 如何保护自己免受恶意软件的侵害

    什么是恶意软件?

    恶意软件是恶意软件的缩写,是任何破坏或未经授权访问其他用户的设备、网站或网络的软件,主要用于数据泄露、身份盗窃、间谍活动等险恶目的。

    Yisrael Rada于1990年创造“恶意软件”一词​​之前,“计算机病毒”是首选术语。它们经常被伪装成干净无害的程序。

    恶意软件可以破坏您的服务、删除您的文件、将您锁定在系统之外、窃取您最私人和机密的信息、将您的设备变成僵尸,甚至破坏整个网络和网站。

    网站恶意软件

    鉴于网站、电子商务解决方案和Web应用程序的指数级增长,网络犯罪分子有无数机会实施他们的恶意计划并利用任何可能的漏洞。

    浏览器的“此站点包含恶意软件”警告

    浏览器的“此站点包含恶意软件”警告(图片来源:FixMyWP

    网站恶意软件专门攻击网站和服务器。它们通常被开发用于绕过网站或服务器的安全防御——或通过不受信任的第三方软件——并在不被发现的情况下获得未经授权的访问。网站恶意软件示例包括DDoS攻击、恶意重定向和垃圾邮件内容。

    恶意软件的工作原理

    网络犯罪分子使用不同的方式通过恶意软件渗透并破坏您的系统。那么你怎么会被恶意软件感染呢?以下是一些流行的攻击途径。

    1. 社会工程学

    恶意软件通常通过社会工程攻击传播。社会工程描述了各种各样的恶意网络攻击。攻击者主要依靠诱骗用户泄露敏感信息或访问他们的设备。

    谷歌的网络钓鱼警告标志

    谷歌的网络钓鱼警告标志(图片来源:FixMyWP

    网络钓鱼是网络犯罪分子用来传播恶意软件的最流行的社会工程攻击——通常是通过电子邮件。您知道92%的恶意软件是通过电子邮件传递的吗?

    2. 捆绑软件

    当您下载带有其他第三方应用程序的免费软件程序时,您可能会被恶意软件感染,其中一个应用程序可能包含恶意软件。许多人成为这种恶意软件攻击的受害者,因为他们忘记取消选中这些附加应用程序的安装。

    3. 点对点文件共享

    点对点 (P2P) 文件共享协议(例如种子文件)是网络犯罪分子用来分发恶意软件的主要方法之一。攻击者可以通过P2P共享的文件快速传播他们的恶意代码,从而感染尽可能多的网络和系统。

    4. 免费软件

    因为获得免费的东西总是一个有吸引力的选择,它通常会付出高昂的代价。从未知或不受信任的来源下载的免费软件通常会感染恶意软件,这些恶意软件可能会损坏您的系统并危及您的数据。

    5. 同质性

    同质性可能会成为恶意软件攻击的诱饵。恶意软件可以通过连接到同一网络并运行同一操作系统的系统迅速传播。如果一台设备被感染,很可能整个网络都受到了威胁。

    不同类型的恶意软件

    了解您的敌人对于了解如何摆脱恶意软件并保护您的计算机、网站或服务器非常重要。这些是您应该了解的最常见的恶意软件类型。

    1. 病毒

    病毒是最明显和最常见的恶意软件类型。病毒可以自我复制,但它们也需要人类行动来造成损害。

    病毒造成的损害包括破坏数据文件、关闭系统或窃取网络内的机密信息。病毒还可以发起其他网络攻击,例如DDoS攻击甚至勒索软件攻击。

    受感染的文件、网站或应用程序必须正在运行,病毒才能唤醒并开始运行。否则,它将保持休眠状态,直到受害者用户运行它。大多数病毒会爬起来并隐藏在.exe.com等常见文件扩展名中。

    如果有权访问仪表盘的用户使用受感染的设备,甚至WordPress网站也可能被感染。

    宏病毒

    宏病毒以软件而不是操作系统为目标,其宏语言与其目标感染的软件(例如MS Word和Excel)相同。因此,这种类型的病毒可以感染任何操作系统,从而给您的组织带来严重的安全风险。

    宏病毒可以通过网络钓鱼电子邮件、受感染网络的下载、恶意P2P服务或受感染的便携式存储设备进行传播。

    2. 勒索软件

    您可能听说过威胁政府、个人和组织的可怕勒索软件攻击。但也许您不确定勒索软件到底是什么以及它是如何工作的。

    简单来说,勒索软件会劫持目标受害者的设备或网站,拒绝他们访问他们的文件,直到他们支付赎金以获得解密密钥(尽管即使您付费也不能保证)。

    自2017年通过WannaCry加密蠕虫传播以来,勒索软件已演变成不同的变体。让我们看一些勒索软件变种的例子。

    Ryuk

    Ryuk是一种加密目标系统文件的勒索软件。这种勒索软件变种针对使用Microsoft操作系统的企业和组织,而不是个人。Ryuk价格昂贵,因为其背后的组织要求以比特币等加密货币支付超过100万美元的赎金。

    LockBit

    LockBit是勒索软件的赎金即服务 (RaaS) 变体,可在被安全系统和IT团队检测到之前攻击并快速加密大型组织的数据。支付赎金后,LockBit团伙将收益与指导攻击的会员分摊。

     

    LockBit的支持页面

    LockBit的支持页面(图片来源:DFIR报告

     

    作为RaaS恶意软件,LockBit团伙通过附属服务传递恶意软件。一旦它感染了一台主机,它就会扫描网络。它可以使用与Windows系统相关的协议快速传播到其他设备,因此很难被识别为威胁。

    WordPress勒索软件

    顾名思义,WordPress勒索软件以WordPress网站为目标,并在要求赎金的情况下通过它们传播。WordPress网站越大,它就越能吸引勒索软件网络犯罪分子。

    最近,许多合法的WordPress网站被黑客入侵并注入了恶意代码,这些恶意代码通过将访问者引导到带有核攻击工具包的恶意网站来传播TeslaCrypt勒索软件

    3.蠕虫

    计算机蠕虫是一种令人讨厌的、自包含类型的恶意软件,由于其快速传播能力,它是一场噩梦。第一个计算机蠕虫,莫里斯蠕虫,创建于1988年,旨在通过利用电子邮件协议漏洞来突出网络弱点。

    与病毒一样,蠕虫可以自我复制,但与病毒不同的是,蠕虫不需要任何人为干预、文件或主机程序即可在网络上从一台设备传播到另一台设备并造成严重破坏。

    蠕虫占据整个系统并吞噬磁盘空间/带宽/内存,修改或删除文件,将您锁定在文件夹之外,甚至安装其他恶意软件并窃取数据。网络攻击者通常会设计蠕虫来安装后门软件程序以访问受害者的设备(计算机、手机、平板电脑等)。

    蠕虫利用目标系统的漏洞,通过LAN(互联网)、电子邮件附件、即时消息、恶意链接、可移动存储驱动器、种子,甚至文件共享平台,像野火一样从一台设备传播到另一台设备。

    在过去的几十年里,蠕虫造成的损害是巨大的。例如,2004年针对企业的MyDoom蠕虫造成了大约400亿美元的损失。2017年,臭名昭著的WannaCry蠕虫启动了勒索软件,其目的是从被黑用户的文件中索取赎金。

    4.特洛伊木马

    特洛伊木马,或简称木马,是一种恶意软件程序,它伪装成合法软件,让网络攻击者访问用户的系统。

    这个词来源于古希腊关于木马作为入侵特洛伊市的礼物的故事。特洛伊木马易于编写和传播,使其难以防御。

    木马可以伪装成网站、媒体文件或任何吸引您注意的软件程序,将其安装在您的设备上。它甚至看起来像一个防病毒程序,警告您您的设备已被感染,并敦促您运行程序来清理它。

    木马也可以作为合法网站或带有受感染链接的电子邮件出现。一些流行的特洛伊木马示例包括Magic Lantern、WARRIOR PRIDE、FinFisher、Beast、Tiny Banker、Zeus、Netbus、Beast和Shedun。

    与计算机病毒不同,木马不会自我复制。它的任务是为黑客和诈骗者打开一扇门,以窃取您的信息,例如密码、IP地址和银行详细信息。木马恶意软件将潜伏在受感染的系统中,直到受害者执行它。

    远程访问木马 (RAT)

    远程访问木马 (RAT) 是网络犯罪开发人员发明的一种恶意工具,用于获得对受害者设备的完全访问和远程控制,例如文件访问、网络远程访问以及键盘和鼠标控制。

    RAT允许攻击者绕过常见的防火墙和身份验证系统以静默浏览您设备的文件和应用程序。

    它们甚至可以感染整个网络,例如2015年在乌克兰发生的臭名昭著的攻击,网络犯罪分子使用RAT恶意软件切断了80,000人的电源并控制了基础设施。

    5. Gootloader

    Gootloader针对Google和WordPress用户。它是Gootkit恶意软件家族的成员——一种复杂类型的银行恶意软件,可以从受害者的浏览器中窃取数据,并用于传播勒索软件等恶意代码。

     

    论坛中的Gootloader示例

    论坛中的Gootloader示例(图片来源:Sophos

     

    Gootloader是一个基于JavaScript的恶意框架,主要用于分发Gootkit恶意软件。但是,它已经过改进并扩大了其有效负载,以覆盖Gootkit并进入基于NodeJS的恶意软件,从而导致SEO中毒。

    新的Gootloader恶意软件可以欺骗Google将受感染(被黑)的网站视为可信网站,包括排名靠前的Google和WordPress网站。那么,这怎么可能呢?

    Gootloader攻击者首先针对众多网站,并将它们维护在大约400台服务器的网络上。之后,他们更改了这些网站的CMS,以使用特定的SEO术语和策略出现在Google的热门搜索结果中,以吸引更多受害者。

    当涉及到WordPress网站时,Gootloader通过将代码行注入网站页面的文件来进行攻击。在执行时,这些代码行会运行特定命令,以强制受感染的网站下载大量带有虚假内容的页面作为诱饵。同时,攻击者执行其恶意计划——未被发现。

    6. 无文件恶意软件

    如果勒索软件不好,无文件恶意软件就更糟了。最近的研究表明,无文件恶意软件的比率在2020年最后一个季度增长了近900%!

    顾名思义,无文件恶意软件是一种险恶的隐身攻击,不需要存储在文件中或通过任何软件直接安装在设备上。相反,无文件恶意软件会直接进入内存并开始执行代码或提取数据而不会引起注意,这使得即使是防病毒软件也很难追踪和删除。

    无文件恶意软件攻击通过社会工程方法以受害者为目标。让我们看看下面的那些主要方法。

    网络钓鱼电子邮件和受感染的链接

    当您点击垃圾邮件、恶意下载或受感染的网站时,您允许恶意软件加载到您设备的内存中,从而为攻击者打开一扇门,通过脚本加载代码,从而窃取您的敏感数据。

    内存代码注入

    这种类型的无文件恶意软件远程感染受信任的操作系统软件,例如Microsoft PowerShell和Windows Management Instrumentation (WMI)。例如,Purple Fox是一种内存代码注入恶意软件,它通过注入恶意代码在系统中传播来感染PowerShell。Purple Fox已经感染了至少30,000个系统。

    注册表操作

    该恶意软件通过将恶意代码注入Windows注册表来工作。一个著名的例子是针对Windows系统的Kovtermalware。它经常未被检测到,因为它通过瞄准计算机的注册表来存储其配置数据来逃避文件扫描。

    7. 间谍软件

    间谍软件会在您不同意或不知情的情况下安装在您的计算机上。它访问浏览习惯、互联网活动、击键、pin、密码、财务信息等等。它不仅限于计算机。您使用的任何连接到互联网的设备都容易受到此类恶意软件的攻击,甚至是智能手机。

    收集到的信息随后会在未经您同意或不知情的情况下被转发给犯罪者,犯罪者可以使用或将其出售给第三方。间谍软件本身不会对您的计算机有害。但是,您的信息的收集和盗窃是首要问题。间谍软件的存在也表明您的设备安全存在弱点。

    间谍软件造成的损害范围很广,从将您的信息出售给广告商这样简单的事情一直到完成身份盗窃。例如,间谍软件DarkHotel在连接到公共酒店WiFi时以企业主和政府官员为目标。然后,网络犯罪分子使用它从这些目标的设备中获取敏感信息。

    8. 广告软件

    广告软件与间谍软件略有相似,因为它也收集诸如浏览活动之类的信息。尽管如此,它并不会跟踪击键,它的唯一目的是为您量身定制广告。但是,某些广告软件可能更具攻击性,甚至会更改您的浏览器设置、搜索引擎偏好等。

    一些广告软件侵入性较小,在收集信息之前会征得您的许可。再说一次,一旦收集到信息,以后可以在未经您同意的情况下将其出售给其他广告商。

    9. 恶意广告

    恶意广告是指网络犯罪分子将恶意软件隐藏在合法广告中。在这种情况下,攻击者会花钱在合法网站上添加广告。点击广告后,您要么被重定向到恶意网站,要么恶意软件会自动安装在您的计算机上。

    在某些情况下,广告中嵌入的恶意软件可能会自动执行,您甚至无需点击广告——这被称为“路过式下载”。

    一些网络犯罪分子甚至可以渗透到负责向几个大型知名网站投放广告的合法和大型广告网络。这使他们所有的受害者都处于危险之中。

    10. 键盘记录器

    键盘记录器是一种恶意软件,可监控受感染用户的在线活动。但是,键盘记录器在某些情况下具有合法用途。例如,一些企业使用它们来跟踪员工的活动,一些父母监控孩子的在线行为。

    在其他情况下,网络犯罪分子使用键盘记录器来窃取密码、财务数据或敏感信息。网络犯罪分子使用网络钓鱼、社交工程或恶意下载将键盘记录器引入您的系统。

    键盘记录器的一个著名例子是Olympic Vision,它针对来自世界各地的企业高管。这些攻击被标记为商业电子邮件泄露 (BEC)。Olympic Vision依靠鱼叉式网络钓鱼和社会工程技术来访问其目标系统、窃取信息和监视商业交易。

    11. 机器人/僵尸网络

    机器人是通常远程控制的软件应用程序,可以根据命令执行任务。它们可以有合法用途,例如索引搜索引擎。尽管如此,它们也可以通过连接回中央服务器的自倍增恶意软件的形式被恶意使用。

    僵尸程序通常大量运行,统称为僵尸程序网络或僵尸网络。这些用于发起远程控制的大量攻击,例如DDoS攻击。

    例如,Mirai僵尸网络可以通过输入设备的默认用户名和密码来访问所有连接到互联网的设备,包括打印机、智能设备、DVR等。

    12. Rootkit

    rootkit被认为是最危险的恶意软件之一——它是一个后门程序,允许网络犯罪分子获得完全访问权限并控制受感染的设备,包括管理权限。

    然后,渗透者可以监视目标设备、更改其配置、窃取敏感数据以及几乎其他任何事情。所有这些都是远程完成的。Rootkit通常注入到应用程序、内核、管理程序或固件中。

    Rootkit可以通过网络钓鱼、恶意附件、恶意下载和受到威胁的共享驱动器进行传播。此外,rootkit 可以隐藏其他恶意软件,例如键盘记录程序。

    例如,一个名为Zacinlo的rootkit隐藏在一个虚假的VPN应用程序中,并在用户下载该应用程序时感染用户的系统。

    13. SQL注入 (SQLi)

    SQL注入(SQLi) 是最常见的数据库攻击之一,自1998年发现以来一直是开发人员严重关注的问题。

    当攻击者利用应用程序代码中的漏洞并将恶意SQL查询注入到目标网站上的任何输入字段(例如登录字段、联系表单、站点搜索栏和评论部分)时,就会发生SQL注入。

    成功的SQLi攻击使黑客能够访问敏感数据、恢复系统文件、在您的网站数据库上执行管理任务、修改数据库信息。他们甚至可以向操作系统的核心数据库发出和执行命令。

    2018年,攻击者在Cisco Prime License Manager中发现了一个漏洞,该漏洞使他们能够通过shell访问许可证管理器的系统,其中一次广泛的SQL注入攻击针对的是Cisco。SQL注入的其他知名受害者是Tesla和Fortnite。

    如何检测恶意软件

    鉴于恶意软件类型和变体的广泛性,以及恶意软件攻击的日益复杂,检测它们从未如此困难,尤其是随着无文件恶意软件等特别恶意威胁的增长。

    尽管如此,一些关键的警告标志可以判断您的设备是否感染了恶意软件:

    • 您的设备速度变慢、突然崩溃或频繁显示错误消息。
    • 您无法删除特定软件。
    • 您的设备不会关闭或重新启动。
    • 您发现您的设备正在发送不是您编写的电子邮件。
    • 程序会自动打开和关闭。
    • 没有明显原因,您的存储空间不足。
    • 您的默认浏览器和程序会不断变化,无需您采取任何行动。
    • 性能下降,而电池消耗增加。
    • 您会在意想不到的地方看到很多弹出窗口和广告,例如在政府网站上。
    • 您无法登录您的网站。
    • 您注意到您没有对您的网站进行的更改。
    • 您的网站重定向到另一个网站。

    由于无文件恶意软件非常难以检测,因此您能做的最好的事情就是密切关注网络模式并分析易受感染的应用程序。您还需要使您的软件程序和浏览器保持最新,并定期搜索任何网络钓鱼电子邮件。

    如何摆脱恶意软件

    如果您被恶意软件感染,请务必不要惊慌。有几个选项您仍然可以保存您的设备或网站。请记住,不同类型的恶意软件需要不同的删除程序。

    从设备中删除恶意软件

    如果您发现您的计算机或移动设备出现上述部分或全部恶意软件感染迹象,请首先确定恶意软件的类型,然后开始采取以下措施:

    • 病毒或木马:如果您的设备感染了病毒或木马,您需要安装可靠的防病毒或反恶意软件程序,以执行深度扫描。定期更新防病毒软件很重要。部署强大的防火墙并在单击电子邮件附件和Web链接时要小心。
    • 蠕虫:尽管它具有危害性,但您可以像清除病毒一样清除计算机蠕虫。安装功能强大的反恶意软件,可以检测蠕虫并让它完成所有工作。如果您的浏览器被感染,请使用另一台计算机,安装反恶意软件,然后将其刻录到CD上。
    • 垃圾邮件:如今的电子邮件服务包括反垃圾邮件功能。但是,您仍然可以安装反垃圾邮件软件来帮助您摆脱垃圾邮件并保护您。

    勒索软件:如果您的组织没有支付赎金,您需要为当局记录攻击证据,然后立即断开受感染的设备。之后,如果您仍然可以访问,请创建系统备份,禁用任何系统清理或优化程序以保留勒索软件文件以进行诊断。最后,开始使用强大的网络安全软件删除勒索软件,并聘请网络安全专家指导您完成恢复文件的过程。

    • 广告软件:可以使用具有广告软件删除功能的反恶意软件程序来清除广告软件。请务必禁用浏览器上的弹出窗口并默认禁用安装其他软件。

    从WordPress网站中删除恶意软件

    尽管WordPress为成长中的企业带来了很多好处,但它仍然存在一些安全漏洞。如果您的WordPress网站受到恶意软件感染,请按照我们推荐的步骤将其删除,就像熟练的网络管理员一样。

    您可以利用很多WordPress安全插件来保护您的网站。

    如何保护自己免受恶意软件的侵害

    正如您现在可能已经意识到的那样,恶意软件攻击是一件大事,学习如何保护自己免受攻击并避免被它们感染对于个人和企业来说都是必不可少的。

    在大多数情况下,恶意软件感染需要您采取行动,例如下载恶意内容或单击受感染的链接。以下是您可以采取的主要预防措施,以避免受到不同类型的恶意软件的攻击。

    1.安装反恶意软件或防病毒软件

    在您的系统上安装强大的反恶意软件或防病毒软件并定期更新非常重要。运行频繁的扫描,尤其是深度扫描,以确保您的设备没有受到感染。反恶意软件程序有不同的保护级别:

    • 浏览器级保护:某些网络浏览器(例如Google Chrome)具有内置的反恶意软件保护功能,可保护您免受不同的恶意软件威胁。您也可以安装自己的以保护您的浏览器。
    • 网络级保护:如果您在组织内拥有计算机网络,则安装网络级反恶意软件是保护连接设备免受来自网络流量的恶意威胁的最佳选择。为此特别推荐使用防火墙。
    • 设备级保护:这些工具有助于保护用户的设备免受恶意威胁。
    • 服务器级保护:如果您有一个大型组织,这种类型的反恶意软件可以保护您的服务器网络免受恶意网络攻击。

    2. 不要打开来自不受信任来源的电子邮件

    避免网络钓鱼从一个重要步骤开始:不要打开带有可疑附件的可疑电子邮件。

    如果您不确定是否可以遵守此规则,或者您不相信您的员工会遵循此黄金建议,那么请投资电子邮件安全工具。您可以使用反垃圾邮件工具和S/MIME证书来保护您的电子邮件通信。

    AS/MIME证书是一种基于PKI的工具,使您能够与其他S/MIME证书用户交换加密和数字签名的电子邮件。这样,您和您的收件人就会知道这些电子邮件是安全且合法的。

    3.提防恶意下载和弹出窗口

    与可疑电子邮件一样,必须注意您下载的内容以及从何处下载。单击链接以从不受信任的来源下载应用程序或游戏是对网络犯罪分子和恶意攻击的邀请。

    弹出窗口也不例外。如前所述,网络犯罪分子使用操纵方式诱骗您点击受感染的链接。

    4. 执行网站和文件安全检查

    保护您的网站应该是您的首要任务。无论您的网站是小型网站还是大型网站,都必须定期进行网站安全检查,以免被任何类型的恶意软件感染。

    您还应该密切关注构成您网站的各个文件。可靠且定期执行的文件完整性监控程序可以帮助您在潜在攻击被触发之前发现它们。

    如果您的网站不安全,它不仅可能被恶意软件感染,还可能引发对其他网站和用户设备的一系列恶意攻击。更重要的是,它会降低您在Google上的SEO排名。您最不想做的就是在互联网上展开恶意软件攻击摊牌!

    5. 维护定期数据备份

    备份个人或公司计算机上的数据至关重要。即使备份数据不会保护您免受恶意软件攻击,但如果您受到勒索软件或任何其他恶意威胁的感染,它将帮助您恢复数据。

    执行健康的数据备份,请保留一份以上的数据副本。最好使用两种不同的媒体类型来存储您的数据文件,以防发生不止一种攻击。您甚至可以选择将一份数据文件副本保存在安全的异地位置。

    小结

    既然您已经全面了解了不同类型的恶意软件以及如何对抗它们,我们强烈建议您投资于可靠且值得信赖的数据安全措施。

    我们还建议及时了解最新的网络安全风险并定期更新您的系统和程序。

  • 了解什么是CSRF攻击及如何锁定CSRF漏洞

    了解CSRF攻击和锁定CSRF漏洞

    网络漏洞很猖獗,而且不断增加。维护你的用户的安全和隐私比以往任何时候都更重要。 不解决网络漏洞会导致声誉毁于一旦,并被监管机构处以巨额罚款,你还会失去用户的信任。

    网站和网络应用程序很容易受到恶意软件、垃圾邮件和其他攻击–本文重点讨论其中一个攻击媒介–跨站请求伪造(CSRF)攻击。CSRF攻击特别令人不安,因为它们可以在用户不知情的情况下发生。开发人员或网站所有者也很难发现它们,因为恶意请求看起来与真实请求高度相似。

    本文探讨了CSRF攻击,它是如何工作的,以及你可以采取哪些步骤来准备应对。

    1. 什么是CSRF攻击?
    2. CSRF攻击是如何工作的?
    3. GET请求的CSRF
    4. POST请求的CSRF
    5. 减轻CSRF攻击的3种方法
    6. 如何使用CSRF令牌防止CSRF攻击
    7. 如何利用Referrer标头来防止CSRF攻击

    什么是CSRF攻击?

    跨站请求伪造攻击,也被称为CSRF攻击,通过提交恶意请求,在不知不觉中欺骗认证用户,使其执行非预期的操作。

    CSRF攻击是如何工作的

    CSRF攻击是如何工作的。(图片来源: Okta)

    通常情况下,CSRF攻击涉及改变状态的请求,因为攻击者没有收到回应。这类请求的例子包括删除记录、更改密码、购买产品或发送消息。这些都可以在用户不知情的情况下发生。

    恶意攻击者通常使用社会工程,通过聊天或电子邮件向毫无戒心的用户发送一个链接。

    当用户点击该链接时,它就会执行攻击者设置的命令。

    例如,点击一个链接可以从用户的账户中转移资金。或者,它可以改变用户的电子邮件地址,使他们无法重新获得账户访问权。

    CSRF攻击是如何工作的?

    让用户在登录时发起一个改变状态的请求是CSRF攻击的第一步,也是最关键的一步。通过CSRF攻击,攻击者的目的是让已认证的用户在不知情的情况下向网站或网络应用程序提交一个恶意的网络请求。这些请求可以包括cookies、URL参数和其他在用户看来正常的数据类型。

    要使CSRF攻击成功,必须发生以下条件:

    • 一个经过验证的用户必须登录到一个使用cookies进行会话管理的网络应用程序。
    • 攻击者必须创建一个改变状态的伪造请求。
    • 由目标服务器处理的真正的请求不应包含不可预测的参数。例如,在启动状态改变请求之前,请求不应该期望有一个密码作为验证的参数。

    完成CSRF攻击的最常见方法是在具有薄弱的SameSite cookie策略的应用程序中使用cookie。 网络浏览器自动地、通常是匿名地包括cookies,它们在用户向某个域发出的任何网络请求中保存该域所使用的cookies。

    SameSite cookie策略定义了浏览器在跨站浏览情况下如何对待cookie。如果设置为严格,cookie就不会在跨网站浏览的情况下共享,从而防止CSRF攻击。如果设置为无,浏览器会在所有的跨网站上下文中附加cookie。这就使应用程序容易受到CSRF攻击。

    当用户在不知情的情况下通过网络浏览器提交一个恶意请求时,保存的cookie会使该请求在服务器看来是合法的。然后,服务器通过改变用户的账户、改变会话状态或返回所请求的数据来响应该请求。

    让我们仔细看看CSRF攻击途径的两个例子,一个是GET请求,另一个是POST请求。

    GET请求的CSRF

    首先,考虑一个金融银行网络应用程序使用的GET请求,攻击利用了GET请求和超链接传递。

    假设转账的GET请求看起来是这样的:

    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=1000&accountNumber=547895 HTTP/1.1

    在上面的真实请求中,用户要求将1000美元转到 547895 的账户中,作为购买产品的付款。

    虽然这个请求是明确、简单和实用的,但它使账户持有人暴露在CSRF攻击之下。这是因为该请求不需要攻击者可能不知道的细节。因此,为了发起攻击,攻击者只需要改变这个请求的参数(金额和账户号码),就可以创建一个可执行的伪造请求。

    恶意请求对银行的任何用户都有效,只要他们正在进行cookie管理会话。

    以下是伪造的向黑客账户(此处为 654585)转账500美元的请求。请注意,下面的示例是CSRF攻击中涉及的步骤的高度简化版本,以供解释。

    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1
    GET https://xymbank.com/online/transfer?amount=500&accountNumber=654585 HTTP/1.1

    一旦完成,攻击者必须找出一种方法,诱骗用户在登录在线银行应用程序时发送此请求。实现这一点的方法之一是创建一个无害的超链接,以吸引用户的注意。链接可能如下所示:

    <a
    href=“https://xymbank.com/online/transfer?amount=500&accountNumber=654585”>Click here to get more information</a>.
    <a
    href=”https://xymbank.com/online/transfer?amount=500&accountNumber=654585″>Click here to get more information</a>.
    <a
    href="https://xymbank.com/online/transfer?amount=500&accountNumber=654585">Click here to get more information</a>.

    如果攻击者找到了目标的正确电子邮件地址,他们可以通过电子邮件将其发送给许多银行客户。那些在登录时单击链接的人将触发请求,从登录的帐户向攻击者发送500美元。

    POST请求的CSRF

    让我们看看,如果同一个金融机构只接受POST请求,他们会如何经历CSRF。在这种情况下,在GET请求的例子中使用的超链接传递将不起作用。因此,一个成功的CSRF攻击将需要攻击者创建一个HTML表单。为购买的产品发送1000美元的真正请求看起来是这样的:

    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895
    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895
    POST /online/transfer HTTP/1.1
    Host: xymbank.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: session=FRyhityeQkAPzeQ5gHgTvlyxHJYhg
    amount=1000
    account=547895

    这个POST请求需要一个cookie来确定用户的身份,他们希望发送的金额,以及他们希望发送的账户。攻击者可以改变这个请求来进行CSRF攻击。

    攻击者只需在一个伪造的请求中添加一个真正的cookie,就可以使服务器处理传输。他们可以通过创建一个看起来无害的超链接,将用户带到一个看起来像这样的触发网页。

    <html>
    <body>
    <form action=“https://xymbank.com/online/transfer” method=“POST”>
    <input type=“hidden” name=“amount” value=“500”/>
    <input type=“hidden” name=“account” value=“654585” />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>
    <html>
    <body>
    <form action=”https://xymbank.com/online/transfer” method=”POST”>
    <input type=”hidden” name=”amount” value=”500″/>
    <input type=”hidden” name=”account” value=”654585″ />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>
    <html>
    <body>
    <form action="https://xymbank.com/online/transfer" method="POST">
    <input type="hidden" name="amount" value="500"/>
    <input type="hidden" name="account" value="654585" />
    </form>
    <script>
    document.forms[0].submit();
    </script>
    </body>
    </html>

    我们已经在上面的表格中设置了金额和账户参数。一旦认证的用户访问该页面,浏览器在将请求转发给服务器之前会添加会话cookie。然后服务器将500美元转发到黑客的账户。

    减少CSRF攻击的3种方法

    有几种方法可以防止和大大减轻对你的网站或网络应用的潜在CSRF攻击,包括:

    • 使用CSRF令牌
    • 使用referrer标头
    • 选择一个注重安全的托管解决方案

    如何使用CSRF令牌防止CSRF攻击

    一个CSRF安全的网站会给每个会话分配一个唯一的令牌,并与服务器端和客户端浏览器共享它。每当浏览器发送一个敏感请求时,服务器都希望它包含指定的CSRF令牌。如果它有错误的令牌,服务器会放弃它。为了安全起见,CSRF令牌并不存储在客户端浏览器的会话cookies中。

    CSRF令牌的潜在漏洞

    虽然CSRF令牌是一个很好的安全措施,但这种方法并不是防攻击的。伴随着CSRF令牌的一些漏洞包括。

    • 绕过验证 – 一些应用程序如果没有找到令牌就跳过验证步骤。如果攻击者获得了对包含令牌的代码的访问权,他们可以删除该令牌并成功执行CSRF攻击。因此,如果对服务器的有效请求看起来像这样。
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433
    POST /change_password
    POST body:
    password=pass123&csrf_token=93j9d8eckke20d433

    攻击者只需要删除令牌,然后像这样发送就可以执行攻击:

    POST /change_password
    POST body:
    password=pass123
    POST /change_password
    POST body:
    password=pass123
    POST /change_password
    POST body:
    password=pass123
    • 池式令牌 – 一些应用程序维护一个令牌池来验证用户会话,而不是为一个会话指定一个特定的令牌。攻击者只需要获得池中的一个令牌就可以冒充网站的任何用户。

    攻击者可以使用他们的账户登录到一个应用程序,以获得一个令牌,例如:

    [application_url].com?csrf_token=93j9d8eckke20d433
    [application_url].com?csrf_token=93j9d8eckke20d433
    [application_url].com?csrf_token=93j9d8eckke20d433

    而由于令牌是池化的,攻击者可以复制并使用该相同的令牌登录到不同的用户账户,因为你会再次使用它:

    • CSRFs可以将令牌复制到cookie中 – 一些应用程序会将与令牌相关的参数复制到用户的cookie中。如果攻击者获得了这样的cookie,他们可以很容易地创建另一个cookie,把它放在浏览器中,并执行CSRF攻击。

    因此,攻击者可以使用他们的账户登录到一个应用程序,并打开cookie文件,看到以下内容:

    Csrf_token:93j9d8eckke20d433
    Csrf_token:93j9d8eckke20d433
    Csrf_token:93j9d8eckke20d433

    然后他们可以使用这些信息创建另一个cookie来完成攻击

    • 无效的令牌 – 一些应用程序不匹配CSRF令牌到用户会话。在这种情况下,攻击者可以真正地登录到一个会话中,获得与上述类似的CSRF令牌,并使用它来策划对受害者会话的CSRF攻击。

    如何利用Referer Header防止CSRF攻击

    另一个防止CSRF攻击的策略是使用referrer标头。在HTTP中,referrer标头表示请求的来源。它们通常被用来进行分析、优化和记录。

    你也可以在服务器端启用检查referrer标头,以防止CSRF攻击。服务器端检查请求的来源,并确定请求的目标来源。如果它们匹配,那么该请求是允许的。如果不匹配,服务器会放弃该请求。

    使用referrer标头像比使用令牌要容易得多,因为它不需要单独的用户识别。

    Referrer标头的潜在漏洞

    与CSRF标记一样,Referrer标头信息也有一些重要的漏洞。

    首先,Referrer标头文件不是强制性的,有些网站会在没有Referrer标头文件的情况下发送请求。如果CSRF没有处理没有标头信息的请求的策略,攻击者可以使用标头信息的请求来执行状态改变的攻击。

    此外,随着最近引入referrer策略,这种方法变得不再有效。这一规范防止了URL泄露给其他域,使用户对referrer标头中的信息有更多的控制。他们可以选择暴露部分referrer头信息,或者通过在HTML页面上添加一个元数据标签来禁用它,如下所示。

    <meta name=“referrer” content=“no-referrer”>
    <meta name=”referrer” content=”no-referrer”>
    <meta name="referrer" content="no-referrer">

    上面的代码为这个页面的所有请求删除了referrer头。这样做使得那些依赖referrer头的应用程序很难防止来自这样一个页面的CSRF攻击。

    小结

    跨站请求伪造(CSRF)是一种欺骗认证用户,使其无意中发起改变状态的请求的攻击。它们的目标是那些不能区分有效和伪造的状态改变请求的应用程序。

    CSRF只能在那些依靠会话cookie来识别登录用户并具有弱的SameSite cookie策略的应用程序上取得成功。他们还需要一个接受不包含未知参数(如密码)的请求的服务器。黑客可以使用GET或POST来发送恶意攻击。

    虽然使用CSRF令牌或强制执行referrer header验证可以防止一些CSRF攻击,但这两种措施都有潜在的漏洞,如果你不小心,就会使你的预防措施失去作用。