如何保护WordPress网站安全

22种可行的方法加强WordPress网站安全性(2022)
Zac
Zac

Web360编辑

上次更新时间:2021年3月10日

WordPress是最流行的内容管理系统之一,它的使用简单方便,有成千上万的主题和插件可供使用,你可以用它创建任何类型的网站。目前,互联网上有35.6%的网站都是用WordPress搭建的。

但是,它的流行也是有代价的。WordPress经常成为黑客的攻击目标。据Sucuri称,2019年,94%的网站安全维护请求来自于WordPress,比2018年增加了4%。

因此,无论是个人博客网站、商业网站或是网上商城网站,保护你的WordPress网站安全应该成为首要任务。

说到WordPress的安全问题,用户通常分为两大阵营:一种是认真对待安全问题并采取预防措施的人,另一种是相信或希望这种事情永远不会发生在他们身上,因为他们的网站不够重要。

为了更好地了解与网站相关的安全问题的严重性,你一定要经常访问Internet Live Stats这个页面。在那里,你可以看到每天被黑的网站的确切数量,甚至可以实时看到上升数字。

保护WordPress网站安全的22个步骤

为防止你的网站成为Internet Live Stats上的一员,请按照以下提示操作保护WordPress网站的安全。

1. 选择提供安全功能的虚拟主机

保护WordPress网站的第一步是选择一家提供安全功能的主机提供商。包括对最新版本的PHP、MySQL和Apache的支持,以及防火墙和24/7全天候安全监控。

如果可能,请选择一款可以用来执行每日备份和定期的恶意软件扫描的虚拟主机(例如SiteGround)。你甚至可以找到采用各种DDOS预防措施的主机提供商。

通常,这些主机是黑客入侵网站需要突破的第一道防线,所以,前期花大价钱购买的主机这时可以看到回报了。我们建议选择专业的WordPress主机提供商。

2. 使用强密码

确保WordPress网站以及主机后台的密码都是安全的。混合使用大写和小写字母、数字和符号,可以得到一个强密码。你还可以使用密码管理器(例如LastPass)来生成和存储安全的密码。

3. 重命名“管理员”用户名

WordPress将默认管理员用户名设置为admin,大多数用户从不费心去更改它。因此,这个admin帐户通常是黑客发起暴力破解时首先尝试的用户名。

因此,你不应该在WordPress网站上使用默认的admin用户名。如果你最近安装了你的WordPress网站,你可能需要设置你自己的用户名。但是如果你是一个长期的WordPress用户,你可能仍然使用管理员用户名。

如果是刚安装好WordPress网站,可以暂时使用默认的用户名。但是,在网站正式上线运营前,要修改管理员用户名。

为你的网站创建一个新的管理员用户名,通过Users > Add new添加新的用户,选择一个强大的用户名和密码,将角色设置为管理员,然后单击Add new user按钮。

然后,使用这个新的账号登录网站,删除旧的管理员用户。在删除旧的管理员用户之前,请记住将所有权限分配给新的管理员用户。

4. 使用非管理员账号发布内容

如果你理解了上一个步骤的原理,可以进一步利用这个技巧。在你的网站发布新的文章时,使用新创建的贡献者或编辑者账号。因为贡献者和编辑者通常没有管理员权限,所以黑客即使破解了这些账号也无法对你的网站造成破坏。

5. 使用备份插件

如果你的网站还没有备份,应该马上去做这个工作。即使最坏的情况发生,你的网站被黑客入侵,你还有备份文件可以把网站还原。

使用UpdraftPlus这类的插件为你的网站创建常规的备份计划,别忘了将备份文件存储在异地,以确保这些文件也不会被感染。

6. 强化网站后台安全

强化网站后台安全,你需要修改默认的网站后台管理区的登录地址,并且限制尝试登录失败的次数,将可疑用户挡在网站之外。

默认情况下,WordPress网站的后台管理URL如下所示:yourdomain.com/wp-admin。黑客当然也知道这一点,会尝试直接访问此URL登录你的网站。

您可以使用WPS Hide Login这类的插件更改这个URL。

关于限制登录尝试失败的次数,可以使用Login Lockdown插件

7. 保持软件更新

在如何提高网站性能的文章里提到过,过时的文件会带来安全风险,使网站容易受到其他漏洞的攻击。所以,你需要在软件发布新版本后及时安装更新。

确保定期检查已安装的插件,并停用并删除不再使用的插件。

8. 保护本地计算机

你可能会问我的电脑和网站有什么关系。如果你的计算机感染了病毒,然后访问你的网站或者将文件上传到网站,这些被感染的文件也会感染你的网站。简而言之,你要确保:

  • 避免使用公共Wi-Fi网络访问你的网站
  • 安装杀毒软件,确保它是最新的

9. 修改数据库前缀

另一个被WordPress黑客所熟知的事实是,你的数据库前缀被设置为wp。这一事实使得他们可以很容易地猜测表前缀,并使用自动SQL注入来访问您的站点。

黑客界熟知WordPress的数据库前缀设置为wp,他们可以很容易地就可以猜出数据库的表前缀,然后使用自动SQL注入来入侵网站。

你可以手动修改数据库前缀,编辑wp-config.php文件并使用phpMyAdmin更改表名。进行更改之前,请确保备份网站,以防万一。

登录到主机帐户并访问cPanel或主机正在使用的控制面板。然后,访问文件管理器并在WordPress目录中找到您的wp-config.php文件。

找到表前缀行,如下所示:$ table_prefix,后跟=符号和表前缀本身。使用数字、下划线和字母的组合将默认字符串替换为你自己的前缀,如下所示:

table_prefix =‘hgwp_3456_’;

编辑完wp-config.php文件后,退出文件管理器并访问phpMyAdmin,这样就可以修改所有表名。手动编辑修改可能会很繁琐,因为总共有11个表需要编辑。所以,你可以通过进入SQL选项卡输入SQL查询。

然后输入:

RENAME table `wp_commentmeta` TO `hgwp_3456_commentmeta`;

RENAME table `wp_comments` TO `hgwp_3456_comments`;

RENAME table `wp_links` TO `hgwp_3456_links`;

RENAME table `wp_options` TO `hgwp_3456_options`;

RENAME table `wpsy_postmeta` TO `hgwp_3456_postmeta`;

RENAME table `wp_posts` TO `hgwp_3456_posts`;

RENAME table `wp_terms` TO `hgwp_3456_terms`;

RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;

RENAME table `wp_term_relationships` TO `hgwp_3456_term_relationships`;

RENAME table `wp_term_taxonomy` TO `hgwp_3456_term_taxonomy`;

RENAME table `wp_usermeta` TO `hgwp_3456_usermeta`;

RENAME table `wp_users` TO `hgwp_3456_users`;

虽然运行上面的语句可以修改数据库中所有的表前缀,但是最好运行一个查询语句检查旧的数据库前缀是否都得到更新:

SELECT * FROM `hgwp_3456_options` WHERE `option_name` LIKE '%wp_%'

你也可以搜索usermeta,用新的前缀替换掉所有剩下的旧前缀:

SELECT * FROM `hgwp_3456_usermeta` WHERE `meta_key` LIKE '%wp_%'

10. 加固.htaccess和wp-config.php文件

.htaccess和wp-config.php是WordPress安装中最重要的文件。因此,需要确保它们是安全且受保护的。

将下面的代码添加到你的.htaccess文件中,在# BEGIN WordPress和# END WordPress标签之外,确保每次更新都不会覆盖更改。

<files wp-config.php>

order allow,deny

deny from all

</files>

<Files .htaccess>

order allow,deny

deny from all

</Files>

<Files wp-login.php>

order deny,allow

Deny from all

# allow access from my IP address

allow from 192.168.1.1

</Files>

上面的代码保护wp-config和.htaccess,并且限制对wp-login.php页面的访问。

最后,添加下面的代码来防止PHP文件执行:

<Files *.php>

deny from all

</Files>

11. 检查并更改文件权限

加固.htaccess和wp-config.php文件后,继续留在你的主机控制面板,检查WordPress网站中文件和文件夹的文件权限。

根据WordPress规范,权限应设置如下:

  • 所有目录都应该是755或750
  • 所有的文件应该是644或640
  • wp-config.php应该是600

如果你的设置不同,黑客可以轻松地读取内容或者更改文件和文件夹的内容,从而导致网站以及同一服务器上的其他网站遭到黑客攻击。

12. 使用双重身份验证

使用像谷歌验证器这样的插件为网站建立双重身份验证。在登录网站时除了输入密码外,你还需要输入手机应用程序生成的代码。这样做的好处是可以阻止黑客的暴力破解登录密码的攻击。

13. 禁用XML-RPC

XML-RPC可以让你的网站与WordPress移动应用程序和Jetpack等插件建立连接。但是,黑客会滥用此协议来一次执行多个命令获得网站的访问权限。使用禁止XML-RPC插件可以禁用此功能。

14. 使用HTTPS和SSL

互联网上有很多讨论HTTPS协议的重要性以及如何为网站添加SSL安全证书的文章。

HTTPS代表安全的超文本传输​​协议,SSL代表安全套接字层。简而言之,HTTPS允许用户的浏览器与你的网站建立安全连接。 HTTPS协议通过SSL进行安全保护。 HTTPS和SSL共同确保用户浏览器和网站之间的所有信息都经过加密。

在你的网站上同时使用这两种功能不仅可以提高网站的安全性,还可以提高搜索引擎排名,建立用户的信任并提高转化率。

咨询你的主机提供商如何安装SSL证书,或者让他们推荐一家信誉良好的SSL证书服务商。

15. 通过WordPress控制面板禁用主题和插件编辑

当你需要快速添加一行代码时,可以在WordPress控制面板中编辑主题和插件文件。但这也意味着任何登录网站的人都可以访问这些文件。

通过将以下代码添加到wp-config.php文件中来禁用此功能:

// Disallow file edit

define( 'DISALLOW_FILE_EDIT', true );

16. 将wp-config.php文件移动到非WWW目录

如上所述,wp-config.php文件是WordPress安装中最重要的文件之一。将该文件从根目录移动到非www目录,可以让黑客很难找到它。

  1. 首先,将wp-config.php文件的内容复制到一个新文件中,并将其另存为wp-config.php。
  2. 返回到旧的wp-config.php文件,添加以下代码:
    <?php>
    
    include('/home/yourname/wp-config.php');
  3. 上传并保存新的wp-config.php文件到不同的文件夹。

17. 更改WordPress安全密钥

WordPress安全密钥负责加密用户存储在Cookie中的信息。它们位于wp-config.php文件中,如下所示:

define('AUTH_KEY', 'put your unique phrase here');

define('SECURE_AUTH_KEY', 'put your unique phrase here');

define('LOGGED_IN_KEY', 'put your unique phrase here');

define('NONCE_KEY', 'put your unique phrase here');

define('AUTH_SALT', 'put your unique phrase here');

define('SECURE_AUTH_SALT', 'put your unique phrase here');

define('LOGGED_IN_SALT', 'put your unique phrase here');

define('NONCE_SALT', 'put your unique phrase here');

使用WordPress密钥生成器来修改它们,使你的网站更安全。

18. 禁用错误报告

错误报告对于故障排除和确定是哪个插件或主题导致你的WordPress网站的错误是很有用的。但是,一旦系统报告错误,它也会显示你的服务器路径。没错,这对于黑客来说是一个绝佳的机会,他们可以发现如何利用这些网站中的漏洞。

你可以通过将以下代码添加到wp-config.php文件中来禁用此功能:

error_reporting(0);

@ini_set(‘display_errors’, 0);

19. 删除WordPress版本号

任何人只要查看你网站的源代码,都能知道你使用的是哪个版本的WordPress。由于每个WordPress版本都有公开的变更日志,详细列出了bug和安全补丁列表,他们可以很容易地确定哪些安全漏洞可以利用。

解决这个问题的简单办法是,通过编辑主题的functions.php文件,添加以下代码来删除WordPress版本号:

remove_action('wp_head', 'wp_generator');

20. 使用安全标头

保护WordPress网站安全的另一种方法是实现安全标头。通常,它们是服务器级别设置的,防止黑客攻击和减少安全漏洞利用的数量。你可以通过修改主题的functions.php文件自己添加它们。

跨脚本攻击

将以下代码添加到内容、脚本、样式等内容的白名单中:

header('Content-Security-Policy: default-src https:');

防止浏览器加载恶意文件。

iframe点击劫持

添加下面这行代码,让浏览器不要在框架中显示页面:

header(‘X-Frame-Options: SAMEORIGIN’);

X-XSS-Protection和X-Content-Type-Options

添加以下代码以防止XSS攻击,并告诉浏览器不要嗅探mime类型

header('X-XSS-Protection: 1; mode=block');

header('X-Content-Type-Options: nosniff');

强制HTTPS

添加以下代码告诉浏览器只使用HTTPS:

header('Strict-Transport-Security:max-age=31536000; includeSubdomains; preload');

WordPress中带有HTTPOnly和Secure标志的Cookie

告诉浏览器只信任服务器设置的cookie,并且该cookie在SSL通道上可用,添加以下代码:

@ini_set('session.cookie_httponly', true);

@ini_set('session.cookie_secure', true);

@ini_set('session.use_only_cookies', true);

如果你不想手动添加这些头文件,可以使用安全头文件的插件。无论选择哪种方法来实现安全标头,最后,在这个安全标头网站输入你的网站的URL来测试它们。

21. 防止盗链

盗链本身并不是一个安全漏洞,它指的是另一个网站使用你网站上的图像或其他媒体文件的链接,这被认为是盗窃行为。所以,盗链不仅导致法律上的后果,还会导致网站运行成本的增加。因为如果盗取你图像的网站有很大的流量,会极大消耗你的服务器资源。

如果你使用的是Apache服务器,将以下代码添加到.htaccess文件中,并将默认域名替换为你的实际域名:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC]

RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Alternatively, if you’re using NGINX servers, you’ll want to modify your config file with the following:

location ~ .(gif|png|jpe?g)$ {

valid_referers none blocked ~.google. ~.bing. ~.yahoo yourdomain.com *.yourdomain.com;

if ($invalid_referer) {

return 403;

}

}

22. 注销空闲用户

本文最后一个安全提示是注销(一段时间)同时在线的用户。可以使用Inactive Logout这样的插件来自动注销同时在线的账户。

这个工作是必要的,因为如果你正在发布一篇新的文章或者被其他工作分散注意力,黑客会劫持你的Session会话,用这种方式入侵你的网站;所以,如果你的网站上同时有多个用户在线,暂时终止其他用户的会话就显得尤为重要。

总结

WordPress是功能强大且流行的CMS系统,任何人都可以轻松创建网站。但是,由于它的流行和受欢迎,因此它也是黑客最喜欢的目标。幸运的是,有很多方法可以保护WordPress网站,如果按照本文的方法进行操作,那么你可以顺利建立一个安全的WordPress网站。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注