是什么让 WordPress 网站成为黑客的首要目标?Anders Johansson 深入研究了 WordPress SQL 注入攻击的工作原理,并分享了消除和预防这些攻击的策略。
您是否知道您的 WordPress 网站现在可能成为黑客的目标?没错!如今,WordPress 为互联网上超过43% 的网站提供支持。这种公开新闻使 WordPress 网站成为黑客的一大目标。
他们攻击的最有害方式之一是通过 SQL 注入。SQL 注入可能会破坏您的网站、窃取数据并破坏您的内容。不仅如此,他们还会将您锁定在网站之外!听起来很可怕,对吧?但别担心,您可以保护您的网站。这就是本文的主题。
什么是 SQL?
SQL 代表结构化查询语言。它是一种与数据库对话的方式,数据库存储和组织大量数据,例如用户详细信息、帖子或网站上的评论。SQL 帮助我们向数据库询问信息或为其提供新数据进行存储。
编写 SQL 查询时,您会向数据库询问问题或为其分配任务。例如,如果您想查看网站上的所有用户,则 SQL 查询可以检索该列表。
SQL 功能强大且至关重要,因为所有 WordPress 网站都使用数据库来存储内容。
什么是 SQL 注入攻击?
WordPress SQL 注入攻击试图访问您网站的数据库。SQL注入(SQLi) 允许黑客利用易受攻击的 SQL 查询来运行他们所做的查询。当黑客诱骗数据库运行有害的 SQL 命令时,就会发生攻击。
黑客可以通过您网站上的输入字段(例如登录表单或搜索栏中的输入字段)发送这些命令。如果网站没有仔细检查输入,命令可以授予对数据库的访问权限。想象一下,黑客输入 SQL 命令而不是输入用户名。它可能会欺骗数据库并显示密码和电子邮件等私人数据。攻击者可以使用它来更改或删除数据库数据。
您的数据库保存所有用户生成的数据和内容。它存储页面、帖子、链接、评论和用户。对于“坏”人来说,它是一座宝贵的数据金矿。
SQL 注入非常危险,因为它们会让黑客窃取数据或控制网站。WordPress防火墙可以防止 SQL 注入攻击。这些攻击可以非常快速地破坏和入侵网站。
SQL 注入:三种主要类型
SQL 注入攻击主要有三种。每种类型的工作方式各不相同,但它们都试图欺骗数据库。我们将研究每一种类型。
In-Band SQLi
这也许是最常见的攻击类型。黑客使用相同的通信方法发送命令并获取结果。即发出请求并立即获得答案。
In-Band SQLi 注入攻击有两种类型:
基于错误的 SQLi,
基于联合的 SQLi。
利用基于错误的 SQLi,黑客可以让数据库发出错误消息。此消息可能会泄露关键数据,例如数据库结构和设置。
那么基于联合的 SQLi攻击呢?黑客使用 SQL UNION 语句将他们的请求与标准查询相结合。它可以让他们访问数据库中存储的其他数据。
Inferential SQLi
使用 Inferential SQLi
,黑客不会立即看到结果。相反,他们会要求给出“是”和“否”答案的数据库查询。黑客可以通过网站的响应方式揭示数据库结构或数据。
他们通过两种常见方式实现这一点:
基于布尔的 SQLi,
基于时间的 SQLi。
通过基于布尔的 SQLi,黑客发送只能为“真”或“假”的查询。例如,此用户 ID 是否超过 100?这允许黑客根据网站的反应收集有关该网站的更多数据。
在基于时间的 SQLi中,如果答案是“是”,黑客会提出一个查询,使数据库需要更长时间才能回复。他们可以根据延迟找出他们需要知道的内容。
Out-of-band SQLi
Out-of-band SQLi 是一种不太常见但同样危险的攻击类型。黑客使用各种方法来获得结果。通常,他们将数据库连接到他们控制的服务器。
黑客无法一次性看到所有结果。但是,他们可以通过电子邮件或网络连接将数据发送到其他地方。当网站阻止普通的 SQL 注入方法时,此方法适用。
为什么防止 SQL 注入至关重要
SQL 注入对网站来说是一个巨大的风险。它们可能导致各种危害 — 数据被盗、网站损坏、法律问题、失去信任等等。
黑客可以窃取用户名、密码和电子邮件等数据。他们可能会通过删除和更改您的数据造成损害。此外,它还会破坏您的网站结构,使其无法使用。
您的用户数据被盗了吗?如果您的网站涉及敏感数据,您可能会面临法律麻烦。如果人们发现您的网站遭到黑客攻击,他们可能会失去对您的信任。因此,您的网站声誉可能会受损。
因此,在 SQL 注入发生之前进行预防至关重要。
防止 WordPress SQL 注入攻击的 11 种方法
好的,我们知道了 SQL 是什么,并且 WordPress 依赖它。我们还知道攻击者会利用 SQL 漏洞。我收集了 11 条提示,可帮助您的 WordPress 网站免受 SQL 注入攻击。这些提示可限制您的漏洞,并保护您的网站免受 SQL 注入攻击。
1. 验证用户输入
SQL 注入攻击通常通过您网站上的表单或输入字段发生。它可能位于登录表单、搜索框、联系表单或评论部分中。黑客是否会在这些字段之一中输入恶意 SQL 命令?他们可能会欺骗您的网站,通过运行这些命令让他们能够访问您的数据库。
因此,请始终清理并验证您网站上的所有输入数据。如果数据不符合特定格式,则用户无法提交数据。避免这种情况的最简单方法是使用Formidable Forms之类的插件,这是一个用于添加表单的高级构建器。话虽如此,WordPress 有许多内置函数可以自行清理和验证输入。它包括sanitize_text_field()
、sanitize_email()
和sanitize_url()
。
验证会在用户输入发送到数据库之前对其进行清理。这些函数会删除不需要的字符并确保数据可以安全存储。
2.避免动态 SQL
动态 SQL 允许您在运行时动态创建 SQL 语句。与静态 SQL 相比,动态 SQL 的工作原理是什么?您可以创建灵活且通用的 SQL 查询,以适应各种条件。因此,动态 SQL 通常比静态 SQL 慢,因为它需要运行时解析。
动态 SQL更容易受到 SQL 注入攻击。当坏人通过注入恶意 SQL 代码来更改查询时,就会发生这种情况。数据库可能会响应并运行此有害代码。因此,攻击者可以访问数据、破坏数据,甚至入侵整个数据库。
如何保证 WordPress 网站的安全?使用准备好的语句、存储过程或参数化查询。
3.定期更新WordPress主题和 插件
保持 WordPress 和所有插件更新是确保网站安全的第一步。黑客经常寻找存在已知安全问题的旧软件版本。
WordPress、主题和插件会定期发布安全更新。它们会修复安全问题。如果您忽略这些更新,您的网站将面临攻击风险。
为了确保安全,请为次要的 WordPress 版本设置自动更新。经常检查主题和插件更新。仅使用来自 WordPress 官方来源或知名开发商的可信插件。
通过经常更新,您可以关闭黑客可能攻击的许多途径。
4.添加 WordPress 防火墙
防火墙是保护 WordPress 网站安全的最佳方法之一。它是 WordPress 网站的盾牌,也是检查所有传入流量的安全卫士。防火墙决定谁可以进入您的网站以及谁会被阻止。
WordPress 防火墙主要有五种类型:
基于插件的防火墙,
Web 应用程序防火墙,
基于云的防火墙,
DNS 级防火墙,
应用级防火墙。
您在 WordPress 网站上安装的基于插件的防火墙。它们在您的网站内部工作,以阻止不良流量。Web应用程序防火墙会过滤、检查和阻止往返于 Web 服务的流量。它们会检测并防御 Web 流量中最常见的危险安全漏洞。基于云的防火墙在您的网站外部工作。它们会在不良流量到达您的网站之前将其阻止。DNS级防火墙通过其云代理服务器发送您的网站流量,只允许它们将真实流量引导到您的 Web 服务器。最后,应用程序级防火墙会在流量到达您的服务器时对其进行检查。这意味着在加载大多数 WordPress 脚本之前。
Sucuri和Wordfence等稳定的安全插件也可以充当防火墙。
5.隐藏你的 WordPress 版本
较旧的 WordPress 版本会在管理页脚中显示 WordPress 版本。显示您的 WordPress 版本并不总是一件坏事。但透露它确实为黑客提供了虚拟弹药。他们想利用过时的 WordPress 版本中的漏洞。
您正在使用旧版 WordPress 吗?您仍然可以隐藏 WordPress 版本:
使用 Sucuri 或 Wordfence 等安全插件清除版本号或
通过向您的文件添加一点代码
functions.php
。
function hide_wordpress_version() { return ''; } add_filter('the_generator', 'hide_wordpress_version');
此代码可阻止您的 WordPress 版本号显示在主题header.php
文件和 RSS 源中。它增加了一层虽小但很有用的安全保护。因此,黑客更难检测到它。
6. 制作自定义数据库错误通知
坏人可以通过错误通知看到您的数据库是如何设置的。确保创建用户可以看到的自定义数据库错误通知以阻止这种情况。当您隐藏错误详细信息时,黑客会发现更难发现您网站的弱点。当您在前端显示较少数据时,网站将更加安全。
为此,请将代码复制并粘贴到新db-error.php
文件中。Jeff Starr 在 2009 年发表了一篇关于该主题的经典文章,其中有一个例子:
<?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 want to send an email to 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: 50px; background: #04A9EA; color: #fff; font-size: 30px; } .box { display: flex; align-items: center; justify-content: center; } </style> </head> <body> <div class="box"> <h1>Something went wrong</h1> </div> </body> </html>
现在将文件保存在/wp-content/
文件夹的根目录中以使其生效。
7. 设置用户角色的访问和权限限制
仅分配每个角色执行其任务所需的权限。例如,编辑可能不需要访问 WordPress 数据库或插件设置。通过仅授予管理员角色完整的仪表板访问权限来提高站点安全性。限制较少角色对功能的访问可降低 SQL 注入攻击的可能性。
8. 启用双因素身份验证
保护您的 WordPress 网站的一个好方法是应用双因素身份验证 (2FA)。为什么?因为它为您的登录页面增加了一层额外的安全保护。即使黑客破解了您的密码,他们仍然无法在没有获得 2FA 代码的情况下登录。
在 WordPress 上设置 2FA 如下:
安装双因素身份验证插件。miniOrange的 Google Authenticator、Two-Factor和Melapress 的 WP 2FA都是不错的选择。
选择您的身份验证方法。插件通常有三种选择:短信代码、身份验证应用程序或安全密钥。
关联您的帐户。您使用的是 Google Authenticator 吗?启动并扫描插件设置中的二维码以进行连接。如果您使用短信,请输入您的电话号码并通过短信获取代码。
测试一下。退出 WordPress 并尝试再次登录。首先,像往常一样输入您的用户名和密码。其次,完成 2FA 步骤并输入您通过短信或电子邮件收到的代码。
启用备用代码(可选)。有些插件可让您生成备用代码。请将这些代码保存在安全的地方,以防您无法访问手机或电子邮件。
9. 删除所有不需要的数据库函数
确保清除不再使用的表格并删除垃圾或未批准的评论。您的数据库将更能抵御试图利用敏感数据的黑客。
10. 监控网站异常 活动
注意您网站上的异常活动。您可以检查多次登录失败或奇怪的流量高峰等行为。当出现异常时, Wordfence或Sucuri等安全插件会提醒您。这有助于在问题恶化之前发现问题。
11. 定期备份你的网站
定期备份至关重要。有了备份,如果网站遭到黑客攻击,您可以快速将网站恢复到原始状态。每次对网站进行重大更新时,您都希望执行此操作。此外,它还涉及更新主题和插件。
开始制定适合您需求的备份计划。例如,如果您每天都发布新内容,那么每天备份数据库和文件可能是一个好主意。
许多安全插件提供自动备份。当然,您也可以使用UpdraftPlus或Solid Security等备份插件。您应该将备份存储在各种位置,例如 Dropbox 和 Google Drive。这样可以让您高枕无忧。
如何从您的网站删除 SQL 注入
假设您已经受到攻击,并且正在处理网站上的 SQL 注入问题。我们介绍的任何预防措施都无济于事。以下是您可以采取的反击和保护网站的方法:
检查数据库是否有变化。查找用户帐户、内容或插件设置中的奇怪条目。
清除恶意代码。使用 Wordfence 或 Sucuri 等安全插件扫描您的网站,以查找并清除有害代码。
恢复干净的备份。损失很大吗?从现有备份恢复您的网站可能是最佳选择。
更改所有密码。更改 WordPress 管理员、数据库和托管帐户的密码。
加强网站安全。清理网站后,请采取我们之前介绍的 11 个步骤来防止将来再次受到攻击。
结论
黑客喜欢脆弱的网站。他们寻找简单的方法来入侵、窃取数据并造成损害。他们经常使用的技巧之一是 SQL 注入。如果他们找到方法,他们可以窃取私人数据、更改您的内容,甚至接管您的网站。这对您和您的访问者来说都是坏消息。
但好消息是:你可以阻止它们!只要采取正确的步骤,就可以在这些攻击发生之前阻止它们。而且你不需要成为技术狂。
许多人忽视网站安全,直到为时已晚。他们会想,“为什么黑客会攻击我的网站?”但黑客不仅会攻击大型网站。他们会攻击任何安全性较弱的网站。因此,即使是小型博客和新网站也处于危险之中。一旦黑客入侵,这个人就会给你造成很大的损失。修复被黑的网站需要时间、精力和金钱。但在攻击发生之前阻止它?这要容易得多。
黑客不会坐等,你又何必呢?每天有成千上万个网站受到攻击,所以不要让您的网站成为下一个。更新您的网站,添加防火墙,启用 2FA,并检查您的安全设置。这些小步骤可以帮助防止将来出现大问题。
您的网站需要保护以防坏人。您辛苦创建了它。切勿忽视更新和保护它。之后,您的网站将更加安全可靠。
网友评论文明上网理性发言 已有0人参与
发表评论: