您想防止 WordPress SQL 注入攻击吗?
SQL 注入是一种安全漏洞,黑客可以利用它来攻击您的网站数据库。一旦他们这样做,攻击者就可以读取您的敏感数据、修改它并控制您的整个数据库。
在本文中,我们将逐步分享一些可操作的技巧,以防止 WordPress 中的 SQL 注入攻击。
SQL 代表结构化查询语言,它是一种与 WordPress 网站的数据库进行通信的编程语言。如果没有此功能,您的网站将无法生成任何动态内容。
然而,未经授权的用户输入、过时的软件或泄露敏感信息可能会导致安全漏洞,并使黑客很容易进行 SQL 注入攻击。
此攻击以您的数据库服务器为目标,并向您的 SQL 添加恶意代码或语句。一旦这样做,黑客就可以使用存储在数据库中的敏感信息(例如用户数据)进行身份盗窃、帐户接管、财务欺诈等。
他们还可以更改数据库条目或帐户权限并执行 DDOS 攻击,使实际用户难以访问您的网站。
这可能会损害客户信任,对用户体验产生负面影响,并减少您的网站流量,这对您的小型企业增长不利。
话虽如此,让我们来看看一些可以防止 WordPress 中 SQL 注入攻击的可行技巧。
注意:在对数据库进行任何更改以采取预防措施之前,我们建议您为其创建备份。这样,如果出现任何问题,您可以使用备份来修复它。有关详细信息,请参阅有关如何手动进行 WordPress 数据库备份的教程。
防止 SQL 注入攻击的有效方法是定期将 WordPress 网站更新到最新版本。这些更新通常会修补安全漏洞,包括数据库软件问题,使黑客难以攻击您的网站。
如果您使用的是过时版本的 WordPress,我们建议您访问仪表板 » 更新页面启用最新版本的自动更新。
在这里,只需单击“为所有新版本的 WordPress 启用自动更新”链接即可。现在,所有主要更新将在发布时安装在您的网站上。
有关更多信息,您可能想查看我们关于如何安全更新 WordPress 的初学者指南。
完成此操作后,您还可以添加防火墙以提高安全性。此功能充当您的网站和传入流量之间的屏障,并在常见的安全威胁(包括 SQL 攻击)到达您的网站之前阻止它们。
对于此功能,我们推荐 Sucuri,它是市场上最好的 WordPress 防火墙软件。它提供应用程序级防火墙、暴力防护以及恶意软件和黑名单删除服务,使其成为一个不错的选择。
此外,该工具过去帮助我们阻止了对我们网站的约 450,000 次 WordPress 攻击。
有关更多详细信息,请参阅我们完整的 WordPress 安全指南。
默认情况下,WordPress 显示您在网站上使用的软件的当前版本号。例如,如果您使用的是 WordPress 6.4,那么该版本将显示在您的网站上以供跟踪。
但是,版本号的公开可见性可能会导致安全威胁,并使黑客更容易执行 WordPress SQL 注入攻击。
这是因为每个版本的 WordPress 都有其独特的漏洞,攻击者在发现您的版本后可以利用这些漏洞。这将使他们能够通过易受攻击的输入字段将恶意代码片段添加到您的网站。
通过将以下代码片段添加到您的functions.php 文件中,您可以轻松地从您的网站中删除版本号。
add_filter('the_generator', '__return_empty_string');
一旦您这样做,黑客将无法通过自动扫描仪或任何其他方式找到您的 WordPress 版本号。
注意:请记住,添加代码时的一个小错误可能会导致您的网站无法访问。这就是我们推荐 WPCode 的原因。它是最好的代码片段插件,使向您的网站添加自定义代码变得超级安全和简单。
有关更多详细信息,请参阅我们有关删除 WordPress 版本号的正确方法的教程。
默认情况下,WordPress 会将前缀 wp_ 添加到您的所有数据库文件中,这使得黑客可以轻松地通过针对该前缀来计划攻击。
防止 SQL 注入攻击的最简单方法是使用黑客无法猜测的独特内容更改默认数据库前缀。
您可以通过使用 FTP 连接您的网站轻松完成此操作。之后,打开 wp-config.php 文件并找到更改 $table_prefix 行。然后,您可以将其从默认的 wp_ 更改为其他类似的内容:wp_a123456_。
$table_prefix = 'wp_a123456_';
接下来,您必须访问您的网络托管帐户的 cPanel。在本教程中,我们将使用 Bluehost,但是,您的 cPanel 可能看起来有点不同,具体取决于您的网络托管公司。
在这里,切换到“高级”选项卡,然后单击“PHPMyAdmin”部分旁边的“管理”按钮。
这将打开一个新页面,您必须从左列中选择数据库名称,然后从顶部切换到“SQL”选项卡。
之后,您可以将以下 SQL 查询添加到文本框中。
请记住将数据库前缀更改为您在编辑 wp-config.php 文件时选择的前缀。
RENAME table `wp_comments` TO `wp_a123456_comments`;
RENAME table `wp_links` TO `wp_a123456_links`;
RENAME table `wp_options` TO `wp_a123456_options`;
RENAME table `wp_postmeta` TO `wp_a123456_postmeta`;
RENAME table `wp_RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`;
posts` TO `wp_a123456_posts`;
RENAME table `wp_terms` TO `wp_a123456_terms`;
RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;
RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_a123456_usermeta`;
RENAME table `wp_users` TO `wp_a123456_users`;
有关更多说明,您可以参阅我们有关如何更改 WordPress 数据库前缀以提高安全性的教程。
黑客通常使用用于输入用户数据的字段(例如联系表单中的评论部分或表单字段)向您的网站注入 SQL 攻击。
这就是为什么验证 WordPress 博客上提交的所有数据非常重要。这意味着如果用户数据不遵循特定格式,则不会在您的网站上提交。
例如,如果电子邮件地址字段没有“@”符号,用户将无法提交表单。通过将此验证添加到大多数表单字段,您可以防止 SQL 注入攻击。
为此,您将需要 Formidable Forms,这是一个高级表单生成器插件。它带有一个“输入掩码格式”选项,您可以在其中添加用户提交表单字段数据必须遵循的格式。
您可以为电话号码或单个文本字段添加特定格式。
如果您不想验证表单字段,那么我们推荐 WPForms,因为它是最好的联系表单插件,具有完整的垃圾邮件防护和 Google reCAPTCHA 支持。
您还可以使用它在表单中添加下拉菜单和复选框。这将使黑客很难添加恶意数据。
有关更多详细信息,请参阅有关如何在 WordPress 中创建安全联系表单的教程。
防止 WordPress SQL 注入攻击的另一个技巧是限制用户对您网站的访问。
例如,如果您有一个多作者博客,那么您将拥有不同的作者以及订阅者和管理员。在这种情况下,您可以通过将完全管理访问权限限制为仅管理员来提高站点安全性。
您可以将所有其他用户角色限制为他们执行工作所需的特定功能。这将减少用户对数据库的访问并防止 SQL 注入攻击。
您可以使用免费的删除仪表板访问插件来完成此操作。激活后,只需访问设置 » 仪表板访问页面,您可以在其中决定哪些用户角色可以访问仪表板。
如果您想根据用户的能力来限制用户,那么您可以参阅我们的教程,了解如何在 WordPress 中添加或删除用户角色的能力。
同样,您还可以将作者限制在您的管理区域中发布自己的帖子,以提高安全性。
有时,您的用户可能会在您的网站上遇到数据库错误,该错误可能会显示有关数据库的重要信息,使其容易受到 SQL 注入攻击。
在这种情况下,我们建议创建一条自定义数据库错误消息,当用户遇到此常见错误时将向用户显示该消息。为此,您需要将以下内容复制并粘贴到记事本应用程序中,并将文件另存为“db-error.php”。
<?php // custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds
// If you wish to email yourself upon an error
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Database Error</title>
<style>
body { padding: 20px; background: red; color: white; font-size: 60px; }
</style>
</head>
<body>
You got problems.
</body>
之后,将您的站点连接到 FTP 程序,并将刚刚创建的文件上传到站点的 /wp-content/ 目录。
现在,当用户在您的网站上遇到数据库错误时,他们只会看到一条错误消息,通知他们该问题,而不会泄露任何敏感信息。
另外,“数据库错误”标题将显示在网络浏览器的选项卡中。
有关更多详细信息,请参阅有关如何在 WordPress 中添加自定义数据库错误页面的教程。
为了防止 SQL 注入攻击,您还应该尝试删除网站上不需要的所有数据库功能和文件。
例如,您可以删除不必要的表、垃圾或未经批准的评论,这些可能使您的数据库容易受到黑客的攻击。
要删除不必要的数据库功能,我们建议使用 WP-Optimize。这是一个令人惊叹的插件,可以删除不必要的表格、帖子修订、草稿、垃圾评论、删除的帖子、pingback、帖子元数据等等。
它会删除您不需要的所有文件并优化您的数据库,使其变得更安全、更快。有关详细信息,请参阅我们有关如何优化 WordPress 数据库的初学者指南。
一旦您采取了针对 SQL 注入攻击的所有预防措施,您还可以选择 WPBeginner 专业服务。
我们可以帮助您识别并修复您不知道的任何其他安全漏洞。另外,如果您已经面临 SQL 注入攻击,那么我们的专家可以帮助您控制损害并恢复系统。
您还可以聘请我们来提高您网站的速度优化、设计、SEO,甚至完全重建您现有的 WordPress 网站,无论它是否被黑客攻击。
欲了解更多信息,请查看我们所有的 WPBeginner 专业服务。
我们希望本文能帮助您了解如何防止 WordPress SQL 注入攻击。您可能还想查看我们的 WordPress 数据库管理初学者指南以及我们精选的最佳 WordPress 数据库插件。
如果您喜欢这篇文章,请订阅我们的 WordPress 视频教程 YouTube 频道。您还可以在 Twitter 和 Facebook 上找到我们。