如何保护您的 WordPress 网站免受 SQL 注入

已发表: 2022-03-09

WordPress 是最常用的网站构建平台之一,因为它具有广泛的潜在应用。 您可以建立一个在线商店、托管一个关于您最喜欢的爱好的博客、通过论坛创建一个社区或代表一家大公司。

但是,无论您如何使用它,主要责任是保护您的网站免受黑客攻击。 这就是为什么了解如何防止结构化查询语言 (SQL) 注入攻击很重要的原因。

好消息是,您可以采取很多措施来保护您的 WordPress 网站免受这种恶意代码的侵害。 学习如何检测、删除和防止 SQL 注入可以帮助您有效地保护您的宝贵数据,并使您不易受到攻击。

什么是 SQL 注入,它是如何工作的?

要了解注入的工作原理,首先了解什么是 SQL 会很有帮助。 这是数据库开发中使用的通用语言。

您的网站使用它从您的数据库中检索关键信息并生成动态内容。 一些 SQL 数据库包括 MySQL(WordPress 站点)、MongoDB 和 SQL Server。

您的 WordPress 网站使用数据库来管理您网站的基本数据和内容,例如您的页面、帖子和评论。 它将这些信息排列在表格中。

查看 WordPress 数据库中的表

您的数据库是存储最敏感数据的地方。 因此,任何暴露它的攻击都可能产生严重的后果。

SQL 注入 (SQLI) 是网络犯罪分子用来渗透和操纵 WordPress 数据库的一种黑客攻击方法。 本质上,黑客可以利用网站后端编码中的漏洞,将恶意代码插入数据输入字段。

此代码允许不法分子通过使用查询字符串、cookie 和 <input> 元素的 Web 请求对数据库服务器执行 SQL 命令。 这意味着他们可以创建、访问、更改和删除 WordPress 数据库中的数据。

有许多不同的入口点可以发生这种情况。 最常用的输入字段包括注册、登录和联系表单,以及搜索栏和购物车。

假设您的网站上有一个表单,访问者可以在其中输入他们的电话号码。 网络犯罪分子可以使用该输入字段插入请求管理员用户名和密码的恶意代码。

SQL 注入的类型

有几种不同类型的 SQL 注入。 一类是所谓的“带内”。 这是最简单的注入类型,包括基于错误的攻击。

通过这种技术,黑客使用注入来获取有关数据库结构和表名的详细信息。 例如,错误消息可能会提供包含在查询中的表名。 然后黑客可以使用这些信息来创建新的攻击。

另一种类型是所谓的“盲 SQL 注入”。 这是攻击者向数据库发送各种查询以了解站点如何分析响应的时候。 这样做可以帮助他们探测对 SQL 查询的响应以识别潜在的漏洞,并请求数据库将数据传输到外部源。

SQL 注入有多常见?

不幸的是,SQL 注入攻击很普遍。 事实上,根据 Akamai 发布的一份报告,在 2017 年至 2019 年间,大约三分之二的软件应用程序攻击归因于 SQL 注入。

另一份 2020 年漏洞统计报告还显示,SQL 注入占最常见关键漏洞的 42%。

SQL 注入对于任何使用 SQL 数据库的网站都是可能的,例如基于 WordPress 的网站,尤其是那些具有联系表单和搜索框等输入字段的网站。

为什么 SQL 注入很危险

SQL 注入是危险的,原因有很多。 首先,它们让黑客有机会窃取敏感信息,例如您的登录凭据或客户数据。

黑客不仅可以使用 SQL 注入来获取和窃取数据,还可以使用它来删除这些数据。 这意味着您有丢失用于运行您的网站的私人和重要信息的风险。

此外,还存在声誉受损和收入损失的风险。 数据泄露可能会损害您的业务,并且您可能会失去客户或粉丝的信任。

此外,这些攻击可能会导致 Google 将您的网站列入黑名单。 如果您最终出现在此列表中,许多潜在访问者将收到您的网站不安全的警告。 这些人中的大多数会回头,并且可能永远不会回来。 此外,谷歌还将大幅降低您的搜索排名——这可能会导致自然流量的重大长期损失,而且难以恢复。

如何检测 SQL 注入

有一些迹象可能表明您已成为 SQL 注入攻击的受害者。 一是您突然通过您网站的联系表收到大量电子邮件。 另一个指标是您是否收到奇怪的弹出窗口、广告和错误消息,尤其是当它们将您重定向到看似粗略的网站时。

不幸的是,SQL 注入攻击的迹象并不总是那么明显。 正如我们前面提到的,有时黑客想要使用注入来窃取信息,而不是破坏您的网站。 因此,他们可能会使用更微妙的方法,使检测更加困难。

SQL注入检测和扫描工具

确定您是否已成为目标的唯一方法是在您的网站上进行扫描。 幸运的是,有多种在线工具可以帮助您检测 WordPress 网站上的 SQL 注入。

例如,您可以使用 Pentest Tools 对您的网站进行两次免费扫描。

PenTest 工具主页

有两种选择:轻度扫描或全面扫描。 对于后者,您需要升级到付费计划。 只需输入您网站的 URL,然后单击扫描目标按钮。 如果存在任何漏洞,扫描将显示它们。

如何从您的 WordPress 网站中删除 SQL 注入

1.恢复备份

删除 SQL 注入的最佳选择是恢复站点的备份。 如果您使用的是 Jetpack Backup,您所要做的就是使用活动日志来确定攻击发生的时间,然后从该点之前恢复备份。 您的网站将恢复到被黑之前的状态。

但是,重要的是要注意,在某些情况下,SQL 注入会随着时间的推移一点点进行。 您可能需要返回很远的地方才能找到干净的备份,这可能会导致数据丢失。

尽管恢复备份可能会使您的网站重新启动并运行,但如果敏感数据被盗,您仍然必须处理违规的后果。

2.使用网站清洁服务

另一种选择是使用第三方网站清理服务来扫描您的网站并修复任何 SQL 注入。 Sucuri 是一种选择——只需将您的网站提交给他们的团队,让他们处理其他所有事情。 由于他们是专家,因此他们可以比普通开发人员更有效地从您的数据库中删除恶意软件。

3.自己移除注射剂

最后,如果您有管理和使用 MySQL 的经验,您可以手动清理数据库。 但请注意,这是一种高级技术,如果您不知道自己在做什么,那么进行任何更改都可能导致问题。

未来如何防止 SQL 注入

没有办法确保您的网站永远 100% 安全,但您可以采取一些措施来最大程度地降低受到攻击的风险。 让我们看一下可用于防止 WordPress 中的 SQL 注入的八种方法。

1. 验证(或清理)您的数据

在 WordPress 中防止 SQL 注入的关键是保护任何可用于在您的网站上输入数据或内容的输入字段。 这包括评论部分和表格。 因此,在提交时验证和清理输入这些字段的数据非常重要。

输入验证和清理可让您检查用户提交的命令。 消毒甚至可以让您更改命令。 这是确保这些命令不包含恶意代码或字符串的有效方法。

验证确保在处理请求之前以表单输入的信息与请求的格式匹配。 例如,如果您有一个电子邮件地址的输入字段,如果不存在“@”符号,则不会验证数据。

为表单数据创建验证的最简单方法是为表单建立规则。 这样做的过程将取决于您使用的特定插件。 例如,如果您使用高级版的强大表单,您可以添加自己的自定义输入掩码格式 对于文本字段。

在 WordPress 中向表单字段添加验证

添加输入格式要求可以限制 SQL 注入的风险。 清理有助于确保输入的数据在经过验证后可以安全处理。

大多数 WordPress 表单插件会自动清理表单数据。 但是,您可以添加额外的安全措施。 考虑使用下拉菜单和多项选择选项,而不是开放式答案。 您还可以限制使用特殊字符。

2.安装WordPress安全工具

Jetpack 的 WordPress 安全插件可以监控您的站点是否存在可能导致 SQL 注入的漏洞。 这使您有机会在有人利用之前修复它们。

通过停机时间监控,您会在站点出现故障的那一刻知道,以便快速做出反应。 通过实时备份,您可以完全恢复您的站点。

它还提供安全工具,例如:

  • 对您的 WordPress 文件进行恶意软件扫描,以及一键修复大多数问题
  • 反垃圾邮件解决方案可保护您的评论和联系表格
  • 蛮力攻击保护,让黑客远离

3. 随时更新您的网站和数据库

使用过时的软件和工具可能会在您的网站上引入一系列漏洞,供黑客利用。 这就是为什么确保始终保持 WordPress 网站更新很重要的原因。

目前,将近一半的 WordPress 安装没有使用最新版本。 因此,您可能需要考虑启用自动更新,以确保您始终运行最新版本的 WordPress。

要对核心更新执行此操作,您可以导航到 wp-config.php文件位于您网站的根目录中。 接下来,将以下代码段复制并粘贴到文件中:

 define( 'WP_AUTO_UPDATE_CORE', true );

您可以通过导航到插件为您的插件启用自动更新 管理仪表板中的屏幕。 然后,点击 从最右列启用自动更新

在 WordPress 中启用自动更新

为了最大限度地减少漏洞,我们建议从您的站点中删除所有未使用的插件或主题。 更新 SQL 版本也是明智之举。 如果您将 cPanel 用于您的主机控制面板,您可以从仪表板更新您的 MySQL 软件。 根据您的托管服务提供商,您可能能够启用自动 SQL 更新。

4. 更改您的 WordPress 数据库前缀

默认情况下,每次安装 WordPress 时,CMS 都会使用“wp_”作为其数据库前缀。 我们强烈建议将其更改为其他内容,因为黑客可以使用它通过 SQL 注入来利用漏洞。

在开始之前,您应该备份您的数据库。 这样,如果出现任何问题,您就可以恢复一个安全的版本。

接下来,通过 FTP 客户端或主机的文件管理器连接到您的站点并浏览到位于您站点根目录中的wp-config.php文件。 在文件中,查找 table_prefix 行,然后将“wp_”更改为其他内容:

 $table_prefix  = 'wp_a12345_';

完成后,保存文件。 就是这样!

5.使用防火墙

您可以用来防止 SQL 注入的另一种策略是安装防火墙。 这是一个网络安全系统,可帮助您监视和控制进入 WordPress 站点的数据。 这可以捕获并过滤掉恶意代码,包括来自 SQL 注入攻击的代码。

您可以使用多种 WordPress 防火墙工具。 一些流行的选项包括 Wordfence 和 Sucuri。 这些工具不会阻止攻击者提交命令,但它们可以帮助阻止他们实际访问您的站点。

6.隐藏您正在使用的WordPress版本

公开您的 WordPress 网站版本可以使攻击者更容易利用已知漏洞,因为每个版本都有自己的集合。 因此,为了保护您的网站,我们建议您隐藏您正在使用的版本。

这样做既快速又简单。 要开始,只需复制以下代码片段:

 remove_action('wp_head', 'wp_generator');

接下来,导航到您当前 WordPress 主题的functions.php文件。 您可以直接从 WordPress 的主题编辑器、使用 FTP 客户端或使用主机的文件管理器来执行此操作。 将代码粘贴到文件中,然后保存更改。

7.消除不必要的数据库功能

WordPress 数据库的功能越多,就越容易受到攻击。 为了最大限度地降低 SQL 注入的风险,请考虑规范化您的数据库并消除任何不必要的功能和内容。

简而言之,数据库规范化是指组织数据的过程。 这样做的目的是消除数据库中的任何冗余数据,并确保所有数据依赖关系都有意义。 您可以通过将数据库置于第一范式来做到这一点。

如果您想要一个对初学者更友好的选项来清理您的 WordPress 数据库,您可以使用插件。 有一些可靠的选项可供选择,例如 WP-Optimize。

这个免费增值插件可帮助您清理数据库,而无需通过 phpMyAdmin 手动运行 SQL 命令。 相反,您可以使用它直接从 WordPress 仪表板优化您的数据库。

数据库表优化选项

它会从您的数据库中删除所有不必要的信息,包括垃圾和未经批准的评论。 WP-Optimize 还允许您通过单击对 MySQL 数据库表进行碎片整理。

8.限制用户访问和权限

您可以在您的网站上为 WordPress 用户分配各种角色。 这些范围可以是从订阅者到管理员的任何地方。 对于每个角色,您可以控制授予多少访问权限以及授予他们哪些“能力”。

为了帮助加强您的安全性,最好限制具有完全管理员访问权限和用户权限的角色数量。 能够更改和输入数据的人越少,您面临 SQL 注入攻击的可能性就越小。

要自定义 WordPress 中的用户角色和权限,您可以导航到用户 → 所有用户

仪表板中的 WordPress 用户

然后,单击要限制访问和权限的用户名称下方的编辑链接。 在下一个屏幕上,您可以使用下拉角色菜单更改他们的角色。

在管理您的 WordPress 用户角色时,我们还建议删除所有不再使用的帐户。 消除过时的角色可以最大限度地减少您的漏洞。

9.避免使用无效插件

无效插件是被盗的高级工具,免费提供。 虽然它们看起来很划算,但您不仅会因为不支付他们的工作而伤害原始开发人员,而且还会冒被黑客入侵的风险。

无效插件通常充满恶意代码和后门,使黑客可以轻松进入您的网站。 不惜一切代价避免使用它们,而是使用信誉良好的插件。

保护您的 WordPress 网站免受 SQL 注入

为了保护您的网站和数据免受网络犯罪分子的威胁,了解用于访问您网站的一些最常用方法非常重要。 当谈到加强数据库的安全性时,这意味着精通 SQL 注入。

正如我们在这篇文章中所讨论的,SQL 注入可能会对您的 WordPress 网站产生破坏性影响,从敏感数据的暴露到内容和收入的损失。 幸运的是,您可以采取一些步骤来检测、删除和防止注入攻击。

没有网站是完全安全的,但是通过遵循上述提示和技术,您可以显着降低成为 SQL 注入受害者的机会。