8、如何使你的WordPress网站更安全
1.选择优质的主机托管商
使WordPress站点免受恶意软件攻击的最佳方法是选择一个在服务器级别提供多层安全性的托管服务提供商。
廉价的托管主机总是非常吸引人的,尤其是在您刚刚开始使用时。但是,从长远来看,如果您对网站的建设很认真,就应该选择安全性较高的主机托管商。
好的主机不仅可以提供卓越的安全性,它还带有许多其他好处,例如内置CDN、自动备份、免费迁移以及免费的WordPress安装,可帮助您节省时间并从一开始就优化您的网站。这些类型的托管服务称为托管型主机。
网络上有很多托管型主机,做外贸网站的,建议使用 SiteGround 或 WPEngine。
国内几乎没有什么针对WordPress优化的托管型主机,但是你可以优先考虑 阿里云、腾讯云 这样的大厂的产品。
2.避免使用盗版主题和插件
高级主题和插件具有其他同类产品无法比拟的功能。开发人员发布了高级版本,以确保他们有足够的财力来将来继续开发更好的产品。
为了确保WordPress的安全性,这些插件和主题会不断更新并投放市场。为这些主题付费的个人会将其更新为最新版本。
开发人员确保质量,保障用户的网站安全。
然而,有些人免费寻求高级功能,去下载使用各种盗版破解的WordPress主题和插件。看起来是占了巨大的便宜,其实这是非常愚蠢的做法。
这种盗版主题和插件可能不是最新版,会存在安全漏洞,并且很多网上流传的盗版东西,都有植入恶意代码,你的网站随时都有可能被黑客拿下,甚至一夜之间就被删除!
这可不是危言耸听,可以看下我们之前发布的文章:
3.安装使用安全插件
您可以通过定期检查网站,主题和插件的代码库来检查网站是否存在漏洞。大多数程序员还是会通过安装安全插件来采取简单而自动化的方法。
安全插件可帮助保护您的网站免受恶意软件攻击和各种形式的黑客攻击。它还可以使您的站点保持24/7全天候运行,并在发生问题时向您发送安全警报。
WordFence在安全插件方面处于行业领先地位,它提供了多种安全功能,例如恶意软件检测,阻止不可靠的登录名,防火墙,扫描仪,两因素身份验证等等。
除了WordFence之外,您还可以使用Sucuri Security来保护WordPress安装。该插件具有强大的功能,例如通过内置的缓存工具和CDN提高站点速度,防御DDoS攻击,利用和其他黑客攻击。
我们提到的这两个插件都带有其高级版本,这些高级版本可为您的WordPress网站带来额外的性能和安全性提升。也就是说,免费版本也非常有用的。
拓展阅读:10个好用的免费WordPress安全插件
4.使用强密码和用户名
强大的密码是保护网站安全的重要工具。通常被忽略,但仍有许多用户喜欢使用“ 123456,password和abc123”之类的密码。
如果您是这些用户之一,请立即更改密码。尽管很容易记住这些密码,但是即使安装了安全插件,黑客也很容易获得访问您的站点的权限,而不会遇到任何特殊问题。
要使用所有最佳做法设置强密码,您应该选择一个在线密码生成器。我们知道生成器将释放复杂且难以记住的密码。要解决该问题,您可以使用密码管理服务(例如Lastpass或Passbolt)。
不要只限于登录密码。为您的托管帐户、FTP和数据库创建强密码。
同样,不要仅仅依靠通用的登录用户名,例如“ Login”或“ admin”。尝试对用户名采取更加个性化的方法,以使黑客无法轻易发现它。此时,您不需要生成器。只需发挥您的想象力,然后找出一个容易记住的用户名即可。
例如,您可以使用喜欢的作者的用户名(例如Ernest Hemingway),并创建一个用户名,例如“ E-Hemmingway”或“ Ernest Hummingbird”。这只是一个有意思的例子。
5.禁用文件编辑选项
您可以通过访问仪表盘并通过 外观>主题编辑器 、插件>插件编辑器 来编辑WordPress主题和插件的代码。
一旦开发人员完成了一些自定义更改(如果有),就应该禁用文件编辑器功能。如果黑客访问您的网站,禁用文件编辑选项也将阻止他们在您的网站上植入恶意代码。
禁用文件编辑功能非常简单。转到您的wp-config.php并粘贴以下代码,如下所示;
define('DISALLOW_FILE_EDIT', true);
6.安装SSL证书
SSL表示该站点是安全的,并且该站点的交易和付款处理也很安全。
如果您希望在搜索引擎结果页(SERP)中排名靠前,并确保用户的WordPress网站安全,那么您必须安装SSL证书。
SSL证书将 https:// 而不是普通的旧 http://添加到您的站点。它向搜索引擎表明网站是安全的,并且网站内的交易和其他活动也是安全的。结果,当您在网站上发布内容并在诸如Google之类的搜索引擎上对其进行排名时,它会优先于其他非安全网站。
互联网上有很多SSL证书提供程序,而且很多都是免费的 ,比如国内大厂 阿里云、腾讯云 都有提供免费SSL证书。
如果你使用的是宝塔面板,登录你的宝塔后台,在网站菜单下,找到对应站点的设置,然后切换到SSL选项卡,直接使用 Let’s Encrypt 的免费SSL证书服务,勾选对应的域名,然后点击申请就好。
7.将“wp-admin”后台网址更改为其他内容,防止暴力破解
默认的WordPress后台网址为:yoursite.com/wp-admin
如果您拥有强大的用户名和密码,那么您已经对黑客安全了。要进一步限制他们的访问,可以通过将网址wp-admin更改为其他内容来完全删除访问。只需要使用 Change wp-admin login 插件和WPS Hide Login插件即可轻松实现。
更进一步,你还可以添加一个双因素身份验证方法,比如使用 双因素身份验证 插件即可。同时,您还将阻止安全性插件报告的登录失败次数最多的IP地址。
或者可以用代码实现:
将下面的代码添加到当前主题的 functions.php 文件:
这样一来,后台登录的唯一地址就是 http://你的地址/wp-login.php?keyword=press,如果不是这个地址,就会自动跳转到你设置的网址,非常舒坦,如果使用原来的后台地址登录,也会被跳转到首页。
你可以修改第 4 行的 keyword
、press 和 http://www.wgzfy.cn/这三个参数。
文件名实现
一、修改wordpress程序网站根目录下wp-login.php的文件名,修改为wa-admin.php(其它任意名称都可以),并将该文件wa-admin.php中出现的字符wp-login.php全部改为wa-admin.php;
二、找到根目录下的wp-includes/general-template.php文件,除代码第238行
$login_url = site_url('wp-login.php', 'login');
不要修改外,该文件内的字符wp-login.php均替换为wa-admin.php,注意完成修改后需要覆盖原文件并保存
8.限制登录尝试
默认的WordPress登录名允许用户尽可能多地登录。它允许真实用户尝试登录几次,直到他/她可以访问为止。
但是对于黑客来说,它提供了足够的空间来尝试访问您的网站。如果有足够的空间,它们还可以触发DDoS攻击,这可能会在一定程度上损害您网站的声誉。
您可以通过Limit Login Attempts Reloaded插件来限制站点上的登录尝试,该插件允许您通过转到插件设置来设置登录尝试次数的限制。
9.隐藏wp-config.php和.htaccess文件
虽然这对于一般用户来说有点高级,但是从长远来看,将这些文件隐藏起来可以证明对提高站点的安全性很有帮助。
警告:在尝试此操作之前,我们建议您为WordPress安装创建备份。由于编码并不适合所有人,因此万一出现问题,它可能会严重影响您站点的流程。因此,在尝试此操作之前请保持警惕。
备份站点后,您所需要做的就是访问.htaccess文件并添加以下代码:
<Files wp-config.php>
order allow,deny
deny from all
</Files>
同样,您需要对.htaccess文件执行以下操作:
<Files .htaccess>
order allow,deny
deny from all
</Files>
即使该过程易于理解和实施,也必须进行备份,以防万一您破坏了网站。同样,编码是留给编码人员的。如果您有开发人员,则应该与他/她一起执行这些操作。
以上是对于Apache环境的用户可行,更多的安全设置可以看下我们的其他教程:
网站管理员和Web开发人员.htaccess入门指南
15个有用的WordPress .htaccess 代码片段
增强WordPress安全性的10个Nginx规则
10.保持WordPress更新
除了定期更新插件和主题外,您还应该同时保持WordPress核心的更新。
与插件和主题相似,WordPress核心开发人员还会在每个新版本中发布新的安全更新。使用较新的更新,可以防止黑客利用公认的漏洞来入侵您的网站。
WordPress会自动安装次要更新。但是,对于主要版本,您可以访问管理控制台以手动安装它们。
11.禁用XML-RPC
XML-RPC文件自3.5版开始提供默认的WordPress安装,如果您希望将站点与Web和移动应用程序连接起来,则至关重要。
尽管这些文件很有用,但黑客已设法利用此文件来放大您网站上的暴力攻击。
在您通过WordFence或其他安全插件安装了蛮力保护的情况下,该插件将阻止通过多个IP地址进行的多次登录尝试。如果黑客尝试入侵您的网站100次,则其IP地址将被阻止100次。
但是,XML-RPC改变了这种情况以支持它们。他们这样做是通过访问system.multicall函数来猜测20至50个请求的密码,而不会使其IP被插件禁止。
Apache环境下使用.htaccess禁用XML-RPC
如果你的服务器或主机空间采用的是Apache服务,可以通过.htaccess禁用WordPress中的xmlrpc.php功能,您需要转到WordPress网站的根文件夹,找到并打开.htaccess文件并添加以下代码:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 123.123.123.123
</Files>
如果您要允许访问xmlrpc.php的特定IP地址,则可以在上面的代码段中替换123.123.123.123。否则,您可以完全删除此行。
Nginx 环境下禁用XML-RPC
location ~* /xmlrpc.php$ {
allow 123.123.123.123;
deny all;
}
12.注销闲置时间过长的用户
每当登录用户(可能是您或您的员工)长时间离开屏幕时,都会对您的网站造成安全风险。可能发生几种方式:
您的WordPress会话可能被恶意软件劫持。
有人可以更改您网站的密码,从而禁用您的访问权限。
他们拥有您的帐户后,便可以对您的帐户进行恶意更改。
建议您删除网站上闲置时间过长的用户,以防止此类入侵您的网站。
您可以使用名为Inactive Logout的插件来实现。安装插件后,只需导航至“设置”>“非活动注销”即可设置插件的时间。然后,单击“ 保存更改”,就完成了。
13.在您的WordPress登录上启用安全问题
如果仅创建强密码,用户名和更改wp-admin登录网址是不够的,则可以通过引入安全问题来进一步提高WordPress网站的安全性。
WordPress插件为您的安全增添了价值。使用WP Security Question插件,您可以将安全问题添加到您的站点。
14.定期执行安全检查
WordFence和相关的安全性插件会定期跟踪您的网站访问量,并向您发送任何奇怪情况的报告(如果确实存在)。
如果您发现网站访问量或SERP总体排名突然发生变化,建议您手动扫描您的网站以查找错误和可能的迹象,表明该网站已被黑客入侵。
有很多非WordPress解决方案可以帮助您检测网站上的问题。就是说,其中最有效的是Sucuri Site Health Check。
进行这些扫描相对容易。您所要做的就是输入网站的网址,然后等待扫描完成。这两种扫描仪的搜索都非常彻底,并且会生成详细的报告,以显示您缺乏安全保护的地方以及与您的站点相关的重大问题是什么。
建议您定期执行这些扫描,以在出现问题时保护自己。
15.在特定的WordPress目录中禁用PHP执行
您可以用来确保后端安全性的另一种方法是禁用某些目录的PHP文件的执行。在某些目录中,例如/wp-content/uploads/,不需要执行php。
与您需要禁用XML-RPC和文件编辑的方式类似,您也可以执行此操作以防止黑客通过它们访问您的网站。
您可以通过打开记事本文档并将以下代码粘贴到该文档上来完成此操作:
<Files *.php>
deny from all
</Files>
将其另存为.htaccess并将其上传到上述目录/wp-content/uploads/。与上面提到的wp-config.php文件类似,最好在执行此操作之前先进行备份,因为更改可能会导致您的网站损坏。
16、wordpress后台增加验证码
示例图如下:
functions.php文件位置:Wordpress后台—>外观—>主题编辑器—>functions.php
17、代码实现发送安全提醒
将以下代码放入主题的functions.php文件里面便可实现纯代码WordPress管理员账号登陆后台成功时自动发送邮件提醒。
文件路径在网站根目录 > wp-content > themes > 主题 > functions.php
登录成功提醒代码
/*****************************************************
函数名称:wp-admin
函数作用:后台登录成功时邮件通知管理员站长
******************************************************/
function wp_login_notify()
{
date_default_timezone_set('PRC');
$admin_email = get_bloginfo ('admin_email');
$to = $admin_email;
$subject = '你的网站登录提醒';
$message = '<p>您好!您的文公子副业网站(' . get_option("blogname") . ')有登录!</p>' .
'<p>请确定是您自己的登录,以防别人攻击!登录信息如下:</p>' .
'<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' .
'<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';
$wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME']));
$from = "From: "" . get_option('blogname') . "" <$wp_email>";
$headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n";
wp_mail( $to, $subject, $message, $headers );
}
add_action('wp_login', 'wp_login_notify');
有人尝试登陆你的系统,但是没有成功,只要有错误的登录,就会发一封邮件到自己的邮箱,将对方尝试的登录名和登录密码发送到你邮箱。
登录失败提醒代码
/*****************************************************
函数名称:wp_login
函数作用:后台登录失败时邮件通知管理员站长
******************************************************/
function wp_login_failed_notify()
{
date_default_timezone_set('PRC');
$admin_email = get_bloginfo ('admin_email');
$to = $admin_email;
$subject = '你的网站登录错误警告';
$message = '<p>您好!您的文公子副业网站(' . get_option("blogname") . ')有登录错误!</p>' .
'<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' .
'<p>登录名:' . $_POST['log'] . '<p>' .
'<p>登录密码:' . $_POST['pwd'] . '<p>' .
'<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' .
'<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';
$wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME']));
$from = "From: "" . get_option('blogname') . "" <$wp_email>";
$headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n";
wp_mail( $to, $subject, $message, $headers );
}
add_action('wp_login_failed', 'wp_login_failed_notify');
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。