指南 · 约 3 分钟阅读
WordPress 加固清单,附可复制粘贴的修复方法
更新最重要。在此之后,这些小改动可以堵上攻击者最先尝试的那些门。
代码和配置保持英文。
1. 保持一切为最新
为插件和主题开启自动更新(插件 → 启用自动更新)。删除不用的东西:已停用的插件同样可能被利用。
2. 禁用内置的文件编辑器
添加到 wp-config.php 中/* That’s all, stop editing! */这一行的上方:
wp-config.php
define( 'DISALLOW_FILE_EDIT', true );3. 屏蔽 XML-RPC(如果你不用它)
Jetpack 和一些移动应用会使用 XML-RPC。如果你不用,就在服务器上屏蔽它:
.htaccess
<Files "xmlrpc.php">
Require all denied
</Files>nginx
location = /xmlrpc.php { deny all; }4. 不再暴露用户名
对未登录的访客隐藏 REST API 的用户列表(作为 must-use 插件放在 wp-content/mu-plugins/ 中):
PHP
<?php
add_filter( 'rest_endpoints', function ( $endpoints ) {
if ( ! is_user_logged_in() ) {
unset( $endpoints['/wp/v2/users'], $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
} );还要检查作者归档页(/?author=1)不会泄露登录名。把每个用户的“公开显示为”设置为与登录名不同的名称。
5. uploads 中不允许 PHP
uploads 目录只应存放媒体文件。把以下内容放进 wp-content/uploads/.htaccess:
.htaccess
<FilesMatch "\.(php|phtml|phar)$">
Require all denied
</FilesMatch>nginx
location ~* ^/wp-content/uploads/.*\.(php|phtml|phar)$ { deny all; }6. 保护 wp-config.php 和登录
- 让
wp-config.php只有其所有者可读(权限600或640,取决于你的主机)。 - 绝不要在网站根目录中留下
wp-config.php.bak、.old或.zip副本。 - 为管理员账户启用双重验证并限制登录尝试次数。
- 在生产环境中保持
WP_DEBUG_DISPLAY关闭,让错误永远不会显示在屏幕上。