如何防止 WordPress SQL 注入攻击(7 个技巧)
您想防止 WordPress SQL 注入攻击吗?
SQL 注入是一种安全漏洞,黑客可以利用它来攻击您的网站数据库。一旦他们这样做,攻击者就可以读取您的敏感数据、修改它并控制您的整个数据库。
在本文中,我们将逐步分享一些可行的技巧,以防止 WordPress 中的 SQL 注入攻击。
为什么要防止 WordPress SQL 注入攻击?
SQL 代表结构化查询语言,这是一种与您的 WordPress 网站数据库进行通信的编程语言。如果没有此功能,您的网站将无法生成任何动态内容。
但是,未经授权的用户输入、过时的软件或泄露敏感信息可能会导致安全漏洞,并使黑客很容易进行 SQL 注入攻击。
此攻击以您的数据库服务器为目标,并向您的 SQL 添加恶意代码或语句。这样做后,黑客可以使用存储在您数据库中的敏感信息(例如用户数据)进行身份盗用、帐户接管、金融欺诈等。
他们还可以更改数据库条目或帐户权限并执行 DDOS 攻击,使实际用户难以访问您的网站。
这可能会损害客户信任,对用户体验产生负面影响,并减少您的网站流量,这对您的小型企业发展不利。
话虽如此,让我们来看看一些可以防止 WordPress 中 SQL 注入攻击的可行技巧。
注意:在对数据库进行任何更改以采取预防措施之前,我们建议您为其创建备份。这样,如果出现任何问题,您可以使用备份来修复它。有关详细信息,请参阅我们关于如何手动进行 WordPress 数据库备份的教程。
1. 定期进行站点更新并使用防火墙
防止 SQL 注入攻击的有效方法是定期将您的 WordPress 网站更新到最新版本。这些更新通常会修补安全漏洞,包括数据库软件问题,使黑客难以攻击您的网站。
如果您使用的是过时的 WordPress 版本,那么我们建议您通过访问 Dashboard » Updates 页面来启用最新版本的自动更新。
在这里,只需单击“为所有新版本的 WordPress 启用自动更新”链接。现在,所有主要更新都将在发布时安装在您的站点上。
有关更多信息,您可能希望查看我们的初学者指南,了解如何安全地更新 WordPress。
完成此操作后,您还可以添加防火墙以提高安全性。此功能充当您的网站与传入流量之间的盾牌,并在常见安全威胁(包括 SQL 攻击)到达您的网站之前将其阻止。
对于此功能,我们推荐 Sucuri,这是市场上最好的 WordPress 防火墙软件。它提供应用程序级防火墙、暴力破解预防以及恶意软件和黑名单清除服务,使其成为一个不错的选择。
此外,该工具过去还帮助我们阻止了我们网站上大约 450,000 次 WordPress 攻击。
有关更多详细信息,请参阅我们完整的 WordPress 安全指南。
2. 隐藏你的 WordPress 版本
默认情况下,WordPress 会显示您在网站上使用的软件的当前版本号。例如,如果您使用的是 WordPress 6.4,那么此版本将显示在您的网站上以供跟踪。
但是,您的版本号的公众可见性可能会导致安全威胁,并使黑客更容易执行 WordPress SQL 注入攻击。
这是因为 WordPress 的每个版本都有其独特的漏洞,攻击者在发现您的版本后可以利用这些漏洞。这将允许他们通过易受攻击的输入字段将恶意代码片段添加到您的站点。
通过将以下代码片段添加到您的 functions.php 文件中,您可以轻松地从您的网站中删除版本号。
1
|
add_filter( 'the_generator' , '__return_empty_string' ); |
一旦你这样做了,黑客将无法通过自动扫描程序或任何其他方式找到你的 WordPress 版本号。
注意:请记住,添加代码时出现一个小错误可能会导致您的网站无法访问。这就是我们推荐 WPCode 的原因。它是最好的代码片段插件,可让您将自定义代码添加到您的站点超级安全和简单。
有关更多详细信息,请参阅我们的教程,了解如何正确删除 WordPress 版本号。
3. 更改 WordPress 数据库前缀
默认情况下,WordPress 会将前缀 wp_ 添加到您的所有数据库文件中,这使得黑客很容易通过针对前缀来计划攻击。
防止 SQL 注入攻击的最简单方法是将默认数据库前缀更改为黑客无法猜到的唯一名称。
您可以通过使用 FTP 连接您的网站来轻松做到这一点。之后,打开 wp-config.php 文件并找到 更改 行。然后,您可以将其从简单的默认值更改为其他内容,例如:。$table_prefix
wp_
wp_a123456_
1
|
$table_prefix = 'wp_a123456_'; |
接下来,您必须访问您的网络托管帐户的 cPanel。在本教程中,我们将使用 Bluehost,但是,您的 cPanel 可能看起来有点不同,具体取决于您的网络托管公司。
在这里,切换到“高级”选项卡,然后单击“PHPMyAdmin”部分旁边的“管理”按钮。
这将打开一个新页面,您必须从左列中选择您的数据库名称,然后从顶部切换到“SQL”选项卡。
之后,您可以将以下 SQL 查询添加到文本框中。
请记住将数据库前缀更改为您在编辑 wp-config.php 文件时选择的前缀。
1
2
3
4
5
6
7
8
9
10
11
12
|
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 数据库前缀以提高安全性。
4. 验证用户数据
黑客通常使用用于输入用户数据(如联系人表单中的评论部分或表单字段)的字段对您的网站注入 SQL 攻击。
这就是为什么验证 WordPress 博客上提交的所有数据很重要的原因。这意味着,如果用户数据不遵循特定格式,则不会在您的网站上提交。
例如,如果电子邮件地址字段没有“@”符号,则用户将无法提交其表单。通过将此验证添加到大多数表单字段,您可以防止 SQL 注入攻击。
为此,您将需要 Formidable Forms,这是一个高级表单构建器插件。它带有一个“输入掩码格式”选项,您可以在其中添加用户提交表单字段数据必须遵循的格式。
您可以为电话号码或单个文本字段添加特定格式。
如果您不想验证您的表单字段,那么我们推荐 WPForms,因为它是最好的联系表单插件,具有完整的垃圾邮件保护和 Google reCAPTCHA 支持。
您还可以使用它在表单中添加下拉菜单和复选框。这将使黑客难以添加恶意数据。
有关更多详细信息,请参阅我们关于如何在 WordPress 中创建安全联系表单的教程。
5. 限制用户角色访问和权限
防止 WordPress SQL 注入攻击的另一个技巧是限制用户访问您的网站。
例如,如果您有一个多作者博客,那么您将拥有不同的作者以及订阅者和管理员。在这种情况下,您可以通过将完全管理员访问权限限制为仅管理员来提高站点安全性。
您可以将所有其他用户角色限制为他们执行工作所需的特定功能。这将减少用户对数据库的访问并防止 SQL 注入攻击。
您可以使用免费的 Remove Dashboard Access 插件来执行此操作。激活后,只需访问Settings » Dashboard Access页面,您可以在其中决定哪些用户角色可以访问控制面板。
如果您想根据用户的能力来限制用户,那么您可以查看我们的教程,了解如何在 WordPress 中的用户角色中添加或删除功能。
同样,您还可以将作者限制在您的管理区域中自己的帖子中,以提高安全性。
6. 创建自定义数据库错误消息
有时,您的用户可能会在您的网站上遇到数据库错误,该错误可能会显示有关数据库的重要信息,使其容易受到 SQL 注入攻击。
在这种情况下,我们建议创建自定义数据库错误消息,当用户遇到此常见错误时,该消息将向用户显示。为此,您需要将以下内容复制并粘贴到记事本应用程序中,并将文件保存为“db-error.php”。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?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/ 目录。
现在,当用户在您的网站上遇到数据库错误时,他们只会看到一条错误消息,告知他们该问题,而不会透露任何敏感信息。
此外,“数据库错误”标题将显示在 Web 浏览器的选项卡中。
有关更多详细信息,请参阅我们关于如何在 WordPress 中添加自定义数据库错误页面的教程。
7. 删除不必要的数据库功能
为了防止 SQL 注入攻击,您还应该尝试删除网站上不需要的所有数据库功能和文件。
例如,您可以删除不必要的表、垃圾箱或未经批准的评论,这些可能会使您的数据库容易受到黑客的攻击。
要删除不必要的数据库功能,我们建议使用 WP-Optimize。这是一个了不起的插件,可以删除不必要的表格、帖子修订、草稿、垃圾评论、已删除的帖子、pingbacks、帖子元数据等等。
它会删除您不需要的所有文件并优化您的数据库以变得更加安全和快速。有关详细信息,请参阅我们的初学者指南,了解如何优化您的 WordPress 数据库。
我们希望本文能帮助您了解如何防止 WordPress SQL 注入攻击。您可能还想查看我们的 WordPress 数据库管理初学者指南和我们最好的 WordPress 数据库插件的首选。
原创文章,作者:网贝WebBay,如若转载,请注明出处:https://www.webbay.cn/how-to-prevent-wordpress-sql-injection-attacks-7-tips