安全防护清单
详细的安全强化指南,保护你的 WordPress 网站。
🛡️ 服务器层安全
Nginx 安全配置
nginx
# 禁用敏感文件访问
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
# 禁用 XML-RPC
location ~ /xmlrpc\.php$ {
deny all;
}
# 限制 PHP 执行
location ~* \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
# 只允许特定路径执行 PHP
location ~ ^/wp-admin/ {
# 允许访问
}
location ~ ^/wp-includes/ {
deny all;
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Apache 安全配置
apache
# .htaccess
# 保护 wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# 禁用目录浏览
Options -Indexes
# 保护 .htaccess 自身
<files ".htaccess">
order allow,deny
deny from all
</files>
# 限制访问敏感文件
<files ~ "\.(log|sql|ini|swp|conf|bak)$">
order allow,deny
deny from all
</files>
# 启用 HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
🔐 WordPress 核心安全
wp-config.php 强化
php
<?php
// =====================
// 安全常量设置
// =====================
// 禁用文件编辑
define('DISALLOW_FILE_EDIT', true);
// 禁用自动更新(可选)
define('AUTOMATIC_UPDATER_DISABLED', true);
define('WP_AUTO_UPDATE_CORE', false);
// 强制 SSL
define('FORCE_SSL_ADMIN', true);
// 安全 Cookie
define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);
define('COOKIEPATH', '/');
define('SECURE_AUTH_COOKIE', 'SECURE_AUTH_COOKIE_' . md5(WP_HOME));
define('LOGGED_IN_COOKIE', 'LOGGED_IN_COOKIE_' . md5(WP_HOME));
// 数据库前缀
// 在安装时更改,不要使用默认的 wp_
// 禁用 REST API(视情况)
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');
// 移除 WordPress 版本
remove_action('wp_head', 'wp_generator');
// 禁用 XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
// 禁用 Windows Live Writer
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
// 禁用短链接
remove_action('wp_head', 'wp_shortlink_wp_head');1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
登录安全
php
<?php
// 限制登录尝试
function limit_login_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient = 'login_attempts_' . md5($ip);
$attempts = get_transient($transient) ?: 0;
if ($attempts >= 5) {
wp_die('登录尝试次数过多,请 15 分钟后再试。');
}
set_transient($transient, $attempts + 1, 15 * 60);
}
add_action('wp_login_failed', 'limit_login_attempts');
// 自定义登录错误消息
add_filter('login_errors', function($error) {
return '登录信息错误。';
});
// 登录超时
function set_login_session_expiry() {
return 3600; // 1小时
}
add_filter('auth_cookie_expiration', 'set_login_session_expiry');1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
数据库安全
sql
-- 使用强密码
ALTER USER 'wp_user'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
-- 限制用户权限
GRANT SELECT, INSERT, UPDATE, DELETE ON wordpress_db.*
TO 'wp_user'@'localhost';
-- 禁止文件导出
REVOKE FILE ON *.* FROM 'wp_user'@'localhost';1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
📊 安全检查清单
::: checklist 服务器安全
- [ ] 使用 HTTPS
- [ ] 配置防火墙
- [ ] 禁用目录浏览
- [ ] 限制 PHP 执行
- [ ] 配置 SSL 证书
- [ ] 启用 HTTP 安全头
- [ ] 定期更新服务器软件 :::
::: checklist WordPress 安全
- [ ] 禁用文件编辑
- [ ] 使用强数据库前缀
- [ ] 更改登录 URL
- [ ] 限制登录尝试
- [ ] 启用双因素认证
- [ ] 定期更换密码
- [ ] 禁用 XML-RPC
- [ ] 隐藏 WordPress 版本 :::
::: checklist 插件和主题安全
- [ ] 保持更新
- [ ] 删除不用的插件
- [ ] 使用可信来源
- [ ] 删除默认主题
- [ ] 定期代码审计 :::
