谈到WordPress安全性,您可以采取很多措施来锁定您的网站,以防止黑客和漏洞影响您的电子商务网站或博客。您最不想发生的事情是一天早上醒来发现您的网站一团糟。因此,今天我们将分享许多技巧、策略和技术,您可以使用这些技巧、策略和技术来提高WordPress安全性并保持受保护。
WordPress安全吗?
您可能想知道的第一个问题是WordPress安全吗?多半是对的。然而,WordPress通常会因为容易出现安全漏洞并且本质上不是用于企业的安全平台而受到批评。这通常是由于用户一直遵循经过行业验证的安全最差做法。
使用过时的WordPress软件、无效的插件、糟糕的系统管理、凭据管理以及非技术人员WordPress用户缺乏必要的Web和安全知识,使黑客能够控制他们的网络犯罪游戏。即使是行业领导者也不总是使用最佳实践。路透社被黑是因为他们使用的是过时的WordPress版本。
从根本上说,安全并不是完全安全的系统。这样的事情很可能是不切实际的,或者不可能找到和/或维护。然而,安全是降低风险,而不是消除风险。这是关于在合理范围内使用所有可用的适当控件,使您可以改善整体姿势,从而降低使自己成为目标并随后被黑客入侵的可能性。– WordPress安全法典
现在,这并不是说漏洞不存在。根据多平台安全公司Sucuri 2017年第三季度的一项研究, WordPress继续领先于他们工作的受感染网站(83%)。 这一比例高于2016年的74%。
WordPress安全漏洞
WordPress为Internet上超过43.0%的网站提供支持,并且拥有数十万个主题和插件组合,因此存在漏洞并不断被发现也就不足为奇了。但是,围绕WordPress平台也有一个很棒的社区,以确保这些东西尽快得到修补。截至2022年,WordPress安全团队由大约50名(高于2017年的25名)专家组成,其中包括首席开发人员和安全研究人员——大约一半是Automattic的员工,还有一些人在网络安全领域工作。
WordPress漏洞
在下面查看一些不同类型的WordPress安全漏洞。
- Backdoors(后门)
- Pharma Hacks
- Brute-force Login Attempts(暴力登录尝试)
- Malicious Redirects(恶意重定向)
- Cross-site Scripting (XSS,跨站脚本)
- Denial of Service
Backdoors(后门)
这个名副其实的后门漏洞为黑客提供了绕过安全加密的隐藏通道,以通过异常方法( wp-Admin、SFTP 、FTP等)访问WordPress网站。一旦被利用,后门使黑客能够通过跨站点污染对托管服务器造成严重破坏攻击——危害托管在同一服务器上的多个站点。在2017年第三季度, Sucuri报告说,后门仍然是攻击者采取的众多黑客攻击后行动之一,71%的受感染网站具有某种形式的后门注入。
恶意软件家族分布
后门通常被加密以看起来像合法的WordPress系统文件,并通过利用平台过时版本中的弱点和错误进入WordPress数据库。TimThumb惨败是利用黑幕脚本和过时软件危害数百万网站的后门漏洞的典型例子。
幸运的是,这个漏洞的预防和治疗相当简单。您可以使用SiteCheck等工具扫描您的WordPress网站, 该工具可以轻松检测常见的后门程序。双重身份验证、阻止IP、限制管理员访问和防止未经授权执行PHP文件很容易解决常见的后门威胁,我们将在下面详细介绍。Canton Becker 也有一篇关于清理WordPress安装上的后门混乱的好文章。
Pharma Hack
Pharma Hack漏洞用于在过时版本的WordPress网站和插件中插入恶意代码,导致搜索引擎在搜索受感染网站时返回药品广告。与传统的恶意软件相比,该漏洞更像是垃圾邮件威胁,但让搜索引擎有足够的理由阻止该网站以散布垃圾邮件的指控。
Pharma Hack的移动部分包括插件和数据库中的后门,可以按照Sucuri博客中的说明进行清理。然而,这些漏洞利用通常是隐藏在数据库中的加密恶意注入的恶意变种,需要彻底的清理过程来修复漏洞。不过,您可以使用推荐的WordPress托管服务提供商和最新的服务器并定期更新您的WordPress安装、主题和插件,从而轻松防止Pharma Hacks。
Brute-force Login Attempts(暴力登录尝试)
蛮力登录尝试使用自动化脚本来利用弱密码并获得对您网站的访问权限。两步验证、限制登录尝试、监控未经授权的登录、阻止IP和使用强密码是防止暴力攻击的一些最简单和高效的方法。但不幸的是,许多WordPress网站所有者未能执行这些安全措施,而黑客很容易在一天内使用暴力攻击破坏多达30,000个网站。
Malicious Redirects(恶意重定向)
恶意重定向使用FTP、SFTP、wp-admin和其他协议在WordPress安装中创建后门,并将重定向代码注入网站。重定向通常以编码形式放置在您的 .htaccess文件和其他WordPress核心文件中,将网络流量引导至恶意站点。我们将在下面的WordPress安全步骤中介绍一些可以防止这些问题的方法。
跨站脚本 (XSS)
跨站点脚本 (XSS) 是指将恶意脚本注入到受信任的网站或应用程序中。攻击者使用它在不知情的情况下向最终用户发送恶意代码,通常是浏览器端脚本。目的通常是获取cookie或会话数据,甚至可能重写页面上的HTML。
根据WordFence的说法,跨站脚本漏洞是WordPress插件中最常见的漏洞。
Denial of Service
可能是其中最危险的一个,拒绝服务 (DDoS)漏洞利用代码中的错误和错误来淹没网站操作系统的内存。黑客通过DDoS攻击利用过时且有漏洞的WordPress软件版本,入侵了数百万个网站并赚取了数百万美元。尽管出于经济动机的网络犯罪分子不太可能以小公司为目标,但他们往往会破坏过时的易受攻击的网站,以创建僵尸网络链来攻击大型企业。
即使是最新版本的WordPress软件也无法全面防御备受瞩目的DDoS攻击,但至少可以帮助您避免陷入金融机构与老练网络犯罪分子之间的交火中。不要忘记2016年10月21日。这是互联网因DNS DDoS攻击而瘫痪的日子。
WordPress安全指南 2022
根据互联网实时统计,每天有超过100,000个网站被黑客入侵。这就是为什么花一些时间阅读以下关于如何更好地加强WordPress安全性的建议如此重要的原因。
WordPress网站每天都被黑客入侵
随着WordPress平台的变化和新漏洞的出现,我们将确保及时更新这篇文章的相关信息。
- 安全的WordPress托管
- 使用最新的PHP版本
- 聪明的用户名和密码
- 最新版本
- 锁定WordPress后台
- 双重身份验证
- HTTPS – SSL证书
- 强化wp-config.php
- 禁用XML-RPC
- 隐藏WordPress版本
- HTTP安全标头
- WordPress安全插件
- 数据库安全
- 安全连接
- 文件和服务器权限
- 在仪表板中禁用编辑
- 防止盗链
- 始终进行WordPress备份
- DDoS防护
1. 安全的WordPress托管
谈到WordPress安全性,不仅仅是锁定您的网站,尽管我们将在下面为您提供有关如何做到这一点的最佳建议。您的WordPress主机还负责Web服务器级别的安全性。
选择一个您可以信任的主机非常重要。或者,如果您在自己的VPS上托管WordPress,那么您需要具备自己做这些事情的技术知识。
安全的WordPress托管
服务器加固是维护完全安全的WordPress环境的关键。它需要多层硬件和软件级别的安全措施来确保托管WordPress站点的IT基础架构能够防御物理和虚拟的复杂威胁。
因此,托管WordPress的服务器应使用最新的操作系统和(安全)软件进行更新,并彻底测试和扫描漏洞和恶意软件。
在服务器上安装WordPress之前,服务器级防火墙和入侵检测系统应该到位,即使在WordPress安装和网站建设阶段也能得到很好的保护。但是,机器上安装的每个旨在保护 WordPress 内容的软件都应该与最新的数据库管理系统兼容,以保持最佳性能。服务器还应配置为使用安全网络和文件传输加密协议(例如SFTP而不是FTP),以隐藏敏感内容免受恶意入侵者的侵害。
托管服务器架构示例
2.使用最新的PHP版本
PHP是您的WordPress网站的支柱,因此在您的服务器上使用最新版本非常重要。PHP的每个主要版本通常在发布后的两年内都得到完全支持。在此期间,会定期修复错误和安全问题并进行修补。截至目前,在PHP 7.1或更低版本上运行的任何人都不再拥有安全支持,并且面临未修补的安全漏洞。
支持的PHP版本
你猜怎么着?根据官方WordPress Stats页面,截至撰写本文时,超过57%的WordPress用户仍在使用PHP 5.6或更低版本。如果将此与PHP 7.0结合使用,则高达77.5%的用户当前正在使用不再受支持的PHP版本。那太可怕了!
有时,企业和开发人员确实需要时间来测试并确保与他们的代码兼容,但他们没有借口在没有安全支持的情况下运行。更不用说在旧版本上运行的巨大性能影响了。
WordPress PHP版本统计
不知道您当前使用的是哪个版本的PHP?大多数主机通常将其包含在您网站的标头请求中。一种快速检查方法是通过Pingdom运行您的站点。单击第一个请求并查找X-Powered-By
参数。通常,这将显示您的Web服务器当前使用的PHP版本。但是,出于安全原因,某些主机会删除此标头。部分服务器默认会删除此标头以确保您的网站安全。
在Pingdom中检查PHP版本
在宝塔面板,您甚至可以通过仪表盘中的按钮在PHP版本之间切换。
宝塔面板切换PHP版本
如果您在使用cPanel的WordPress主机上,通常可以通过单击软件类别下的“PHP Select”在PHP版本之间切换。
cPanel PHP版
3.使用聪明的用户名和密码
令人惊讶的是,加强WordPress安全性的最佳方法之一就是简单地使用巧妙的用户名和密码。听起来很容易对吧?好吧,看看SplashData的2019年全年最常被盗密码的年度列表(按受欢迎程度排序)。
- 123456
- password
- 123456789
- 12345678
- 12345
- 111111
- 1234567
- sunshine
- qwerty
- iloveyou
没错!最受欢迎的密码是“123456”,其次是一个惊人的“密码”。
强制使用安全的WordPress密码
核心WordPress的wp_hash_password
函数使用phpass密码散列框架和八次基于MD5的散列。
一些最好的安全性从基础开始。Google对如何选择强密码有一些很好的建议。或者,您可以使用强密码生成器等在线工具。您可以在此处了解有关如何更改WordPress密码的更多信息。
为每个网站使用不同的密码也很重要。存储它们的最佳方式是本地存储在计算机上的加密数据库中。KeePass是一个很好的免费工具。如果您不想走这条路,还有在线密码管理器,例如1Password或LastPass。即使您的数据安全地托管在云中,这些通常也更安全,因为您没有在多个站点上使用相同的密码。它还可以防止您使用便签。
就您的WordPress安装而言,您永远不应该使用默认的“admin”用户名。为管理员帐户创建一个唯一的WordPress用户名,并删除“admin”用户(如果存在)。您可以通过在仪表盘的“用户”下添加一个新用户并为其分配“管理员”配置文件(如下所示)来执行此操作。
WordPress管理员角色
为新帐户分配管理员角色后,您可以返回并删除原来的“管理员”用户。确保在单击删除时选择“将所有内容归于”选项并选择新的管理员配置文件。这将指定此人作为这些文章的作者。
将所有内容归于管理员
您还可以使用以下命令在phpMyAdmin中手动重命名您当前的管理员用户名。确保在编辑表格之前备份您的数据库。
UPDATE wp_users SET user_login = 'newcomplexadminuser' WHERE user_login = 'admin';
4. 始终使用最新版本的WordPress、插件和主题
加强WordPress安全性的另一个非常重要的方法是始终保持最新状态。这包括WordPress核心、插件和主题(来自WordPress插件库和高级版)。这些更新是有原因的,很多时候这些包括安全增强和错误修复。我们建议您阅读我们关于WordPress自动更新如何工作的深入指南。
让WordPress保持最新状态
不幸的是,数以百万计的企业运行着过时版本的WordPress软件和插件,但仍然相信他们正走在商业成功的正确道路上。他们列举了不更新的原因,例如“他们的站点将崩溃”或“核心修改将消失”或“插件 X 无法工作”或“他们只是不需要新功能”。
事实上,网站崩溃主要是因为旧 WordPress 版本中的错误。WordPress团队和了解所涉及风险的专家开发人员从不推荐核心修改。WordPress更新主要包括必备的安全补丁以及运行最新插件所需的附加功能。
您是否知道据报道 插件漏洞占黑客已知入口点的55.9% ?这就是WordFence在一项研究中发现的,他们采访了1,000多名WordPress网站所有者,这些网站所有者都是攻击的受害者。通过更新您的插件,您可以更好地确保您不是这些受害者之一。
被黑的WordPress 网站
还建议您只安装受信任的插件。WordPress插件库中的“特色”和“流行”类别可能是一个很好的起点。或者直接从开发者网站下载。我们强烈反对使用无效的WordPress插件和主题。
首先,您永远不知道修改后的代码可能包含什么。这很容易导致您的网站被黑客入侵。不为高级 WordPress 插件付费也无助于整个社区的发展。我们需要支持开发人员。
以下是正确删除WordPress主题的方法。
您可以使用像VirusTotal这样的在线工具 来扫描插件或主题的文件,以查看它是否检测到任何类型的恶意软件。
病毒总数
如何更新WordPress核心
有几种简单的方法可以更新您的WordPress安装。
要更新WordPress核心,您可以单击WordPress仪表盘中的“更新”,然后单击“立即更新”按钮。
更新WordPress核心
您还可以通过下载最新版本并通过SFTP上传来手动更新WordPress。
重要的!如果操作不正确,覆盖错误的文件夹可能会破坏您的网站。如果您对此感到不自在,请先咨询开发人员。
请按照以下步骤更新现有安装:
- 删除旧的
wp-includes
和wp-admin
目录。 - 上传新的
wp-includes
和wp-admin
目录。 - 将新文件夹中的单个文件上传
wp-content
到现有wp-content
文件夹,覆盖现有文件。不要删除您现有的wp-content
文件夹。不要删除现有wp-content
目录中的任何文件或文件夹(被新文件覆盖的文件或文件夹除外)。 - 将新版本根目录中的所有新松散文件上传到您现有的WordPress根目录。
如何更新WordPress插件
更新WordPress插件与更新WordPress核心的过程非常相似。单击WordPress仪表盘中的“更新”,选择要更新的插件,然后单击“更新插件”。
更新WordPress插件
同样,您也可以手动更新插件。只需从插件开发人员或WordPress插件库中获取最新版本并通过FTP上传,覆盖目录中的现有插件 /wp-content/plugins
。
同样重要的是要注意,开发人员并不总是让他们的插件保持最新。WP Loop的团队对存储库中有多少WordPress插件没有跟上当前的WordPress核心进行了很好的分析。 根据他们的研究 ,插件库中将近50%的插件在2年多的时间里没有更新。
这并不意味着该插件不适用于当前版本的WordPress,但建议您选择积极更新的插件。过时的插件更有可能包含安全漏洞。
img src:WP循环
在插件方面使用您的最佳判断。查看“上次更新”日期和插件有多少评分。如下例所示,这个已经过时并且评论很差,所以我们很可能会建议远离它。WordPress在大多数一段时间未更新的插件顶部也有一个警告。
评分不佳的旧WordPress插件
还有很多资源可以帮助您掌握最新的WordPress安全更新和漏洞。请参阅下面的一些:
- WP Security Bloggers : 一个包含20多个安全源的很棒的聚合资源。
- WPScan漏洞数据库:目录超过10,000个WordPress核心、插件和主题漏洞。
- ThreatPress:每日更新的WordPress插件、主题和WordPress核心漏洞数据库。
- 官方WordPress安全档案
WordPress安全档案
5. 锁定您的WordPress管理后台
有时,流行的WordPress隐蔽安全策略对于普通的在线业务和WordPress网站来说是适当有效的。如果您让黑客更难找到某些后门,那么您受到攻击的可能性就会降低。锁定您的WordPress管理后台并登录是增强安全性的好方法。两种很好的方法是首先更改您的默认wp-admin登录URL并限制登录尝试。
如何更改您的WordPress登录URL
默认情况下,您的WordPress站点的登录URL是 domain.com/wp-admin。问题之一是所有的机器人、黑客和脚本都知道这一点。通过更改URL,您可以减少自己的目标并更好地保护自己免受暴力攻击。这不是万能的解决方案,它只是一个小技巧,绝对可以帮助保护您。
要更改您的WordPress登录 URL,我们建议使用免费的WPS Hide login插件或高级Perfmatters插件。这两个插件都有一个简单的输入字段。请记住选择一些独特的东西,这些东西不会出现在机器人或脚本可能会尝试扫描的列表中。
使用Perfmatters隐藏WordPress登录URL
如何限制登录尝试
虽然上述更改管理员登录URL的解决方案可以帮助减少大多数错误登录尝试,但设置限制也非常有效。免费的Cerber Limit Login Attempts插件是轻松设置锁定持续时间、登录尝试以及IP白名单和黑名单的好方法。
限制WordPress中的登录尝试
如果您正在寻找更简单的WordPress安全解决方案,另一个不错的选择是免费的Login Lockdown插件。登录锁定记录每次失败登录尝试的IP地址和时间戳。如果在短时间内从同一IP范围内检测到超过一定次数的尝试,则对该范围内的所有请求禁用登录功能。并且完全兼容我们上面提到的WPS Hide登录插件。
锁定WordPress
如何添加基本HTTP身份验证(htpasswd保护)
锁定管理员的另一种方法是添加HTTP身份验证。这需要用户名和密码才能访问WordPress登录页面。注意:这通常不应在电子商务网站或会员网站上使用。但这可能是防止机器人访问您的网站的一种非常有效的方法。
.htpasswd身份验证提示
Apache
如果您使用的是cPanel主机,您可以从其控制面板启用受密码保护的目录。要手动设置,您首先需要创建一个 .htpasswd
文件。您可以使用这个方便的生成器工具。然后将文件上传到你的wp-admin文件夹下的一个目录,例如:
home/user/.htpasswds/public_html/wp-admin/htpasswd/
然后使用以下代码创建一个.htaccess
文件并将其上传到您的/wp-admin/
目录。确保更新目录路径和用户名。
AuthName "Admins Only" AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/htpasswd AuthType basic require user yourusername
这样做的一个警告是它会破坏您网站前端的AJAX (admin-ajax)。这是某些第三方插件所必需的。因此,您还需要将以下代码添加到上述 .htaccess文件中。
Order allow,deny Allow from all Satisfy any
Nginx
如果您正在运行Nginx,您还可以使用HTTP基本身份验证来限制访问。看看这个教程。
启用后,您的WordPress网站将需要身份验证才能访问它。您可以随时更改凭据或在不再需要时将其禁用。
锁定URL路径
如果您使用的是Cloudflare或Sucuri等Web应用程序防火墙 (WAF),它们也有办法锁定URL路径。本质上,您可以设置一个规则,以便只有您的IP地址才能访问您的WordPress管理员登录URL。同样,这通常不应在电子商务网站或会员网站上使用,因为它们也依赖于访问您网站的后端。
- Cloudflare在其Pro和更高级别帐户中具有锁定URL功能。您可以为任何URL或路径设置规则。
- Sucuri具有黑名单URL路径功能。然后,您可以将自己的IP列入白名单。
6. 利用双重身份验证
当然,我们不能忘记两因素身份验证!无论您的密码有多安全,都存在被他人发现的风险。双因素身份验证涉及一个两步过程,在该过程中,您不仅需要密码登录,还需要第二种方法。它通常是文本 (SMS)、电话或基于时间的一次性密码 (TOTP)。在大多数情况下,这可以100%有效地防止对您的WordPress网站的暴力攻击。为什么?因为攻击者几乎不可能同时拥有您的密码和手机。
关于双因素身份验证,实际上有两个部分。第一个是您在网络托管服务提供商处拥有的帐户和/或仪表板。如果有人可以访问它,他们可能会更改您的密码、删除您的网站、更改DNS记录以及各种可怕的事情。
双因素身份验证的第二部分与您的实际WordPress安装有关。为此,我们推荐几个插件:
- Duo Two-Factor Authentication
- Google Authenticator
- Two Factor Authentication
其中许多都有自己的身份验证器应用程序,您可以在手机上安装:
- Android Duo Mobile App
- iPhone Duo Mobile App
- Android Google Authenticator App
- iPhone Google Authenticator App
安装和配置上述插件之一后,您通常会在WordPress登录页面上有一个额外的字段来输入您的安全代码。或者,使用Duo插件,您首先使用您的凭据登录,然后需要选择一种身份验证方法,例如Duo Push、呼叫或密码。
这种方法可以很容易地与更改您的默认登录URL相结合,我们之前已经讨论过。因此,您的WordPress登录URL不仅只有您知道,而且现在需要额外的身份验证才能进入。
WordPress两因子身份验证器页面
因此,请确保利用两因素身份验证,这可能是增强WordPress安全性的一种简单方法。
7. 使用HTTPS进行加密连接 – SSL证书
加强WordPress安全性的最容易被忽视的方法之一是安装SSL证书并通过HTTPS运行您的网站。HTTPS(安全超文本传输协议)是一种允许您的浏览器或Web应用程序安全地连接到网站的机制。一个很大的误解是,如果您不接受信用卡,就不需要SSL。
好吧,让我们解释一下为什么HTTPS在电子商务之外很重要的几个原因。许多主机,都通过Let’s Encrypt提供免费的SSL证书。
HTTPS加密连接
1. 安全
当然,HTTPS的最大原因是增加了安全性,是的,这确实与电子商务网站密切相关。但是,您的登录信息有多重要?对于那些运行多作者WordPress网站的人,如果您通过HTTP运行,则每次有人登录时,该信息都会以纯文本形式传递到服务器。HTTPS对于维护网站和浏览器之间的安全连接至关重要。这样,您可以更好地防止黑客和/或中间人访问您的网站。
因此,无论您拥有博客、新闻网站、代理机构等,它们都可以从HTTPS中受益,因为这可以确保不会以纯文本形式传递任何内容。
2. 搜索引擎优化
Google已经正式表示HTTPS 是一个排名因素。虽然这只是一个很小的排名因素,但你们中的大多数人可能会利用在SERP中获得的任何优势来击败竞争对手。
3. 信任和信誉
根据GlobalSign的一项调查,28.9% 的访问者会在浏览器中寻找绿色地址栏。其中 77% 的人担心他们的数据在网上被截获或滥用。通过看到那个绿色挂锁,客户会立即更加安心,因为他们知道他们的数据更加安全。
4. 推荐数据
很多人没有意识到HTTPS到HTTP推荐数据在Google Analytics中被阻止。那么数据会发生什么变化呢?好吧,其中大部分只是与“直接流量”部分混为一谈。如果有人从HTTP转到HTTPS,则仍会通过引荐来源网址。
5. Chrome警告
自2018年7月24日起,Chrome 68及更高版本开始将所有非HTTPS网站标记为“不安全”。不管他们是否收集数据。这就是为什么HTTPS比以往任何时候都更重要的原因!
如果您的网站大部分流量来自Chrome,这一点尤其重要。您可以在浏览器和操作系统的受众部分下查看Google Analytics,以便查看您的WordPress网站从Google Chrome获得的流量百分比。谷歌让访问者更清楚地知道您的WordPress网站可能没有在安全连接上运行。
Chrome不是一个安全的网站
6. 性能
由于一个称为HTTP/2的协议,很多时候,那些通过HTTPS运行经过适当优化的站点甚至可以看到速度提高。由于浏览器支持,HTTP/2需要HTTPS。性能的提升有多种原因,例如HTTP/2能够支持更好的多路复用、并行性、Huffman编码的HPACK压缩、ALPN扩展和服务器推送。
使用TLS 1.3,HTTPS 连接速度更快。
现在重新考虑HTTPS?查看我们深入的WordPress HTTPS迁移指南,让您快速上手,并在我们的TLS与SSL比较中了解更多信息。
要在登录和管理您的站点时强制在您和服务器之间建立安全、加密的连接,请将以下行添加到您的wp-config.php
文件中:
define('FORCE_SSL_ADMIN', true);
(建议阅读:如果您使用的是旧TLS版本,您可能需要在Chrome中修复ERR_SSL_OBSOLETE_VERSION通知)。
8. 强化你的wp-config.php文件
您的wp-config.php文件就像WordPress安装的核心和灵魂。就WordPress安全性而言,它是您网站上迄今为止最重要的文件。它包含您的数据库登录信息和安全密钥,用于处理 cookie 中的信息加密。以下是您可以采取的一些措施来更好地保护这个重要文件。
1.移动wp-config.php
默认情况下,您的wp-config.php文件位于 WordPress 安装的根目录(您的 /public
HTML文件夹)中。但是您可以将其移动到非www可访问的目录。亚伦亚当斯写了一个很好的解释为什么这是有益的。
要移动您的wp-config.php
文件,只需将其中的所有内容复制到另一个文件中即可。然后在您的wp-config.php
文件中,您可以放置以下代码段以简单地包含您的其他文件。注意:目录路径可能因您的网络主机和设置而异。通常虽然它只是上面的一个目录。
<?php include('/home/yourname/wp-config.php');
注意:这可能不适用于某些WordPress主机。这是因为出于安全原因,open_basedir限制不允许在 ~/public
目录上方执行PHP 。
2. 更新WordPress安全密钥
WordPress安全密钥是一组随机变量,可改进存储在用户cookie中的信息的加密。从WordPress 2.7开始,有4个不同的键:AUTH_KEY
、SECURE_AUTH_KEY
、 LOGGED_IN_KEY
和 NONCE_KEY
.
当您安装WordPress时,这些是为您随机生成的。但是,如果您经历了多次迁移(查看我们精选的最佳WordPress迁移插件列表)或从其他人那里购买了网站,那么创建新的WordPress密钥可能会很好。
WordPress实际上有一个免费工具,您可以使用它来生成随机密钥。您可以更新存储在wp-config.php文件中的当前密钥。
WordPress安全密钥
阅读有关WordPress安全密钥的更多信息。
3. 更改权限
通常,WordPress站点根目录中的文件将设置为644,这意味着文件的所有者可以读取和写入文件,并且该文件的组所有者中的用户可以读取文件,其他所有人都可以读取文件。根据WordPress文档,wp-config.php
文件的权限应设置为440或400,以防止服务器上的其他用户读取它。您可以使用FTP客户端轻松更改此设置。
wp-config.php权限
在某些托管平台上,权限可能需要不同,因为运行Web服务器的用户没有写入文件的权限。如果您对此不确定,请咨询您的托管服务提供商。
9. 禁用XML-RPC
在过去几年中, XML-RPC已成为暴力攻击的重要目标。正如Sucuri所提到的,XML-RPC的隐藏特性之一是您可以使用system.multicall方法在单个请求中执行多个方法。这非常有用,因为它允许应用程序在一个HTTP请求中传递多个命令。但也会发生的是,它被用于恶意目的。
有一些像Jetpack这样的WordPress插件依赖于XML-RPC,但大多数人不需要这个,简单地禁用对它的访问可能是有益的。不确定XML-RPC当前是否在您的网站上运行?Automattic团队的Danilo Ercoli编写了一个名为 XML-RPC Validator的小工具。您可以通过它运行您的WordPress站点以查看它是否启用了XML-RPC。
WordPress XML-RPC验证器
要完全禁用此功能,您可以安装免费的Disable XML-RPC插件。或者您可以使用高级perfmatters插件禁用它,该插件还包含Web性能改进。
10. 隐藏你的WordPress版本
隐藏您的WordPress版本再次涉及WordPress安全性的主题。其他人对您的WordPress站点配置了解得越少越好。如果他们看到您正在运行过时的WordPress安装,这可能是入侵者的一个欢迎信号。默认情况下,WordPress版本显示在您网站源代码的标题中。同样,我们建议您确保您的WordPress安装始终是最新的,这样您就不必担心这一点。
源代码中的WordPress版本
您可以使用以下代码来删除它。只需将其添加到您的WordPress主题functions.php
文件中。
重要的!如果操作不当,编辑WordPress主题的源代码可能会破坏您的网站。
function wp_version_remove_version() { return ''; } add_filter('the_generator', 'wp_version_remove_version');
您还可以使用像 perfmatters这样的高级插件,它允许您一键隐藏WordPress版本,以及对WordPress网站的其他优化。
使用Perfmatters隐藏WordPress版本
显示WordPress版本的另一个地方是每个WordPress版本中包含的默认文件readme.html
(如下所示)。它位于安装的根目录中,domain.com/readme.html
. 您可以通过FTP安全地删除此文件。
自述文件中的WordPress版本
如果您运行的是WordPress 5.0或更高版本,则不再适用,因为版本号不再包含在文件中。
11. 添加最新的HTTP安全标头
加强WordPress安全性的另一个步骤是利用HTTP安全标头。这些通常在Web服务器级别配置,并告诉浏览器在处理您的站点内容时如何表现。有许多不同的HTTP安全标头,但以下通常是最重要的标头。
- Content-Security Policy
- X-XSS-Protection
- Strict-Transport-Security
- X-Frame-Options
- Public-Key-Pins
- X-Content-Type
如果您想了解更多关于HTTP安全标头的信息,KeyCDN有一篇深入说明的文章。
您可以通过启动Chrome devtools并查看您网站的初始响应中的标头来检查您的WordPress网站上当前正在运行哪些标头。以下是一个网站的示例。您可以看到我们正在使用strict-transport-security
、x-content-type
和x-frame-options
标头。
HTTP安全标头
您还可以使用Scott Helme提供的免费securityheaders.io工具扫描您的WordPress网站。这将显示您当前在您的站点上有哪些HTTP安全标头。如果您不确定如何实施它们,您可以随时询问您的主机是否可以提供帮助。
HTTP安全标头扫描
注意:同样重要的是要记住,当您实施HTTP安全标头时,它可能会如何影响您的WordPress子域。例如,如果您添加内容安全策略标头并限制域访问,则您还需要添加自己的子域。
12. 使用WordPress安全插件
当然,我们必须提及一些WordPress安全插件。有很多优秀的开发人员和公司提供出色的解决方案来帮助更好地保护您的WordPress网站。这是其中的几个。
- Sucuri Security
- iThemes Security
- WordFence Security
- WP fail2ban
- SecuPress
部分服务器提供商具有硬件防火墙、主动和被动安全性、按分钟正常运行时间检查和许多其他高级功能,可防止攻击者访问您的数据。
以下是上述插件的一些典型功能和用途:
- 创建用户配置文件时生成并强制使用强密码
- 强制密码过期并定期重置
- 用户操作记录
- 轻松更新WordPress安全密钥
- 恶意软件扫描
- 两因子身份验证
- 重新验证码
- WordPress安全防火墙
- IP白名单
- IP黑名单
- 文件更改日志
- 监控DNS更改
- 阻止恶意网络
- 查看访问者的WHOIS信息
许多安全插件的一个非常重要的功能包括校验和实用程序。这意味着他们检查您的WordPress安装并查找对WordPress.org提供的核心文件的修改(通过API)。对这些文件的任何更改或修改都可能表明存在黑客攻击。您还可以使用WP-CLI运行您自己的checksum。
请务必阅读我们关于文件完整性监控的详尽指南。
另一个值得一提的优秀插件是WP Security Audit Log插件。 这对于那些在WordPress多站点或只是多作者站点上工作的人来说太棒了。它有助于确保用户的工作效率,并让管理员看到正在更改的所有内容;例如登录、密码更改、主题更改、小工具更改、新文章创建、WordPress更新等。
这是一个完整的WordPress活动日志解决方案。在撰写本文时,WP Security Audit Log插件已获得超过100,000次活动安装。如果您正在寻找与WordPress多站点兼容的安全解决方案,这是一个绝佳的选择。
安全审核日志查看器
它还具有额外的高级插件,例如电子邮件通知、用户会话管理、搜索和报告。查看这些额外的WordPress安全插件,它们可以帮助锁定坏人。
13. 加强数据库安全
有几种方法可以提高WordPress数据库的安全性。首先是使用一个巧妙的数据库名称。如果您的网站名为排球技巧,默认情况下您的WordPress数据库很可能命名为wp_volleyballtricks
. 通过将您的数据库名称更改为更隐蔽的名称,它有助于保护您的网站,使黑客更难以识别和访问您的数据库详细信息。
第二个建议是使用不同的数据库表前缀。默认情况下,WordPress使用wp_
. 将其更改为类似的东西39xw_
可能会更加安全。当您安装WordPress时,它会要求提供表前缀(如下所示)。还有一些方法可以更改现有安装的WordPress表前缀。
WordPress表前缀 – img src: jatinarora
14. 始终使用安全连接
我们怎么强调使用安全连接的重要性都不为过!确保您的WordPress托管它采取预防措施,例如提供SFTP或SSH。SFTP或安全文件传输协议(也称为 SSH 文件传输协议)是用于文件传输的网络协议。与标准FTP相比,这是一种更安全的方法。
确保您的家庭路由器设置正确也很重要。如果有人入侵了您的家庭网络,他们可以访问各种信息,包括可能存储您关于WordPress网站的重要信息的位置。以下是一些简单的提示:
- 不要启用远程管理 (VPN)。典型用户从不使用此功能,通过将其关闭,您可以避免将您的网络暴露给外界。
- 路由器默认使用192.168.1.1等范围内的IP。使用不同的范围,例如10.9.8.7。
- 在您的Wifi上启用最高级别的加密。
- 将您的Wifi列入IP白名单,以便只有拥有密码和特定IP的人才能访问它。
- 保持路由器上的固件是最新的。
在公共场所登录您的WordPress网站时,请务必小心。请记住,星巴克不是一个安全的网络!在单击连接之前采取预防措施,例如验证网络SSID。您还可以使用ExpressVPN等第3方VPN服务来加密您的互联网流量并隐藏您的IP地址以防黑客。
15.检查文件和服务器权限
安装和Web服务器上的文件权限对于增强WordPress安全性至关重要。如果权限太松,有人可以轻松访问您的网站并造成严重破坏。另一方面,如果您的权限过于严格,这可能会破坏您网站上的功能。因此,全面设置正确的权限非常重要。
文件权限
- 如果用户有权读取文件,则分配读取权限。
- 如果用户有权写入或修改文件,则会分配写入权限。
- 如果用户有权运行文件和/或将其作为脚本执行,则分配执行权限。
目录权限
- 如果用户有权访问识别的文件夹/目录的内容,则分配读取权限。
- 如果用户有权添加或删除文件夹/目录中包含的文件,则会分配写权限。
- 如果用户有权访问实际目录并执行功能和命令,包括删除文件夹/目录中的数据的能力,则分配执行权限。
您可以使用iThemes Security之类的免费插件来扫描您的WordPress网站上的权限。
WordPress文件权限扫描
以下是关于WordPress中文件和文件夹权限的一些典型权限建议。有关更深入的说明,请参阅有关更改文件权限的WordPress Codex文章。
- 所有文件应为644或640。例外:wp-config.php应为440或400,以防止服务器上的其他用户读取它。
- 所有目录应为755或750。
- 任何目录都不应该被赋予777,即使是上传目录。
16.在WordPress仪表盘中禁用文件编辑
很多 WordPress 网站都有多个用户和管理员,这会使WordPress的安全性更加复杂。一个非常糟糕的做法是授予作者或贡献者管理员访问权限,但不幸的是,这种情况一直都在发生。为用户提供正确的角色和权限非常重要,这样他们就不会破坏任何东西。因此,简单地禁用WordPress中的“外观编辑器”可能是有益的。
你们中的大多数人可能曾经去过那里。你去外观编辑器中快速编辑一些东西,突然你留下了一个白屏死机。最好在本地编辑文件并通过FTP上传。当然,在最佳实践中,您应该首先在开发站点上测试这样的东西。
WordPress外观编辑器
此外,如果您的WordPress网站被黑客入侵,他们可能做的第一件事就是尝试通过外观编辑器编辑PHP文件或主题。这是他们在您的网站上执行恶意代码的快捷方式。如果他们无法从仪表板访问此信息,首先,它可以帮助防止攻击。将以下代码放入您的wp-config.php
文件中以删除所有用户的“edit_themes”、“edit_plugins”和“edit_files”函数。
define('DISALLOW_FILE_EDIT', true);
17.防止盗链
盗链的概念很简单。您在Internet上的某个地方找到一张图片,并直接在您的网站上使用该图片的URL。此图像将显示在您的网站上,但将从原始位置提供。这实际上是盗窃,因为它使用了热链接站点的带宽。这可能看起来没什么大不了的,但它可能会产生很多额外的成本。
The Oatmeal就是一个很好的例子。《赫芬顿邮报》热链接了他的一幅由多张图片组成的卡通片,并获得了高达1,000美元以上的账单。
盗链账单
Apache防盗链
要实现Apache服务器的防盗链,只需将以下代码添加到您的.htaccess
文件中。
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourdomain.com [NC] RewriteRule .(jpg|jpeg|png|gif)$ http://dropbox.com/hotlink-placeholder.jpg [NC,R,L]
第二行定义了允许的引荐来源——允许直接链接到图像的站点,这应该是您的实际网站。如果您想允许多个站点,您可以复制此行并替换引荐来源网址。如果你想生成一些更复杂的规则,看看这个htaccess hotlink protection generator。
NGINX防盗链
为了实现NGINX服务器防盗链,只需将以下代码添加到您的配置文件中。
location ~ .(gif|png|jpe?g)$ { valid_referers none blocked ~.google. ~.bing. ~.yahoo yourdomain.com *.yourdomain.com; if ($invalid_referer) { return 403; } }
CDN防盗链
如果您从CDN提供图像,则设置可能会略有不同。以下是一些流行的CDN提供商的资源。
- 使用KeyCDN进行防盗链保护
- 使用Cloudflare进行防盗链保护
- 使用MaxCDN进行防盗链保护
18. 始终备份
备份是每个人都知道他们需要但并不总是采取的一件事。上面的大多数建议都是您可以采取的安全措施,以更好地保护自己。但无论您的网站有多安全,它都永远不会100%安全。因此,您需要备份以防最坏的情况发生。
大多数托管WordPress托管服务提供商现在都提供备份。
如果您的主机没有备份,则可以使用一些流行的WordPress服务和插件来自动化该过程。
WordPress备份服务
WordPress站点备份服务的月费通常很低,并将您的备份存储在云中。
- VaultPress (来自Automattic团队,现在是Jetpack的一部分)
- CodeGuard
- BlogVault
WordPress备份插件
WordPress备份插件允许您通过FTP获取备份或与外部存储源集成,例如Amazon S3、Google Cloud Storage、Google Drive或Dropbox。我们强烈建议使用增量解决方案,以便它使用更少的资源。
- Duplicator
- WP Time Capsule
- BackupBuddy
- UpdraftPlus
- BackUpWordPress
- BackWPup
- WP BackItUp
19. DDoS防护
DDoS是一种DOS攻击,其中多个系统用于针对单个系统导致拒绝服务 (DoS) 攻击。DDoS攻击并不是什么新鲜事——根据Britannica的说法,第一个记录在案的案例可以追溯到2000年初。与入侵您的网站的人不同,这些类型的攻击通常不会损害您的网站,而只会让您的网站瘫痪几个小时或几天.
你能做些什么来保护自己?最好的建议之一是使用信誉良好的3rd方安全服务,例如Cloudflare 或Sucuri。如果您正在经营一家企业,那么投资他们的高级计划是有意义的。
来自Cloudflare和Sucuri的DDoS保护
他们先进的DDoS保护可用于缓解各种形式和规模的DDoS攻击,包括针对UDP和ICMP协议的攻击,以及SYN/ACK、DNS放大和第7层攻击。其他好处包括将您置于有助于隐藏您的原始IP地址的代理后面,尽管它不是万无一失的。
请务必查看我们关于如何阻止DDoS攻击的案例研究。我们的客户有一个运行Easy Digital Downloads的小型电子商务网站,该网站在7天内收到了超过500万次单个页面的请求。该站点通常每天仅产生30-40MB的带宽和数百名访问者。但出乎意料的是,该网站立即达到了每天15-19GB 的数据传输量!这增加了4650%。谷歌分析显示没有额外的流量。所以这不好。
来自DDoS攻击的高带宽
客户在他们的站点上实施了Sucuri的Web应用程序防火墙,所有带宽和请求立即丢弃在站点上(如下所示),此后没有出现过任何问题。因此,如果您遇到此类问题,这绝对是一个很好的投资和节省时间的方法。
添加了Sucuri Web应用程序防火墙
小结
如您所见,有多种方法可以加强您的WordPress安全性。使用巧妙的密码、保持核心和插件更新,以及选择安全的托管WordPress主机,这些只是让您的WordPress网站保持正常运行和安全运行的一小部分。对于你们中的许多人来说,您的WordPress网站既是您的业务,也是您的收入,因此花一些时间并尽快实施上述一些安全最佳实践非常重要。