零基础也能照做的WordPress网站安全漏洞修复 + 高级优化保姆级教程。
建议先在**暂存环境(Staging)**演练后再动正式站,避免线上故障。下面第一部分就教你“备份+暂存+还原演练”。
总览导航(按顺序完成)
- 备份与还原演练(UpdraftPlus + 宝塔/阿里/腾讯/七牛)
- 高危加固(更新/管理员/隐藏登录/防火墙/2FA/SSL)
- 恶意扫描与清理(Wordfence 扫描与处置)
- 系统级加固(权限、
wp-config.php
、XML-RPC、上传目录禁执行、安全头) - 性能与稳定(LSCache 或 W3TC / WP Rocket、图片 WebP、对象缓存 Redis、真 Cron)
- 国内加速(阿里云 CDN/腾讯 CDN、图片走七牛/OSS/COS、本地字体、禁用 Google 外链)
- 邮件与验证码(WP Mail SMTP + QQ/163、极验/本地防 spam)
- SEO 与合规(备案号/公安备案、站点地图、搜索控制台)
- 例行保养与故障一键脱困(清单)
Part 0|先打底:备份 + 暂存 + 还原演练(必做)
0.1 云备份(UpdraftPlus → 阿里云 OSS / 腾讯云 COS / 七牛云 任选其一)
在 WordPress 后台安装 UpdraftPlus
- 点击路径:后台左侧 插件 → 安装插件
- 输入:右上搜索框填
UpdraftPlus
- 点击:现在安装 → 启用
- 看到:左侧出现 设置 → UpdraftPlus Backups
连接国内云存储(3 选 1)
你只需选一个用,最常用:阿里云 OSS。
A. 阿里云 OSS
- 点击路径:设置 → UpdraftPlus Backups → 设置
- 在“存储”区域:点 阿里云 OSS(若列表未见,先装“UpdraftPlus: OSS 扩展”,或改用 B 方案)
- 打开阿里云控制台 → 访问控制 RAM → 用户 → 创建/选择用户 → 创建访问密钥
- 回到 UpdraftPlus:
- 输入:AccessKey ID / AccessKey Secret
- Endpoint:如
oss-cn-hangzhou.aliyuncs.com
(按你的地域) - Bucket:提前在 OSS 建好,如
wp-backup-你的域名
- 点击:页面底部 保存更改 → 按引导完成授权
- 回到“当前状态” → 立即备份 → 勾 数据库 + 文件 → 立即备份
- 看到:出现一条最新备份记录,带“远程存储:OSS”字样
B. 腾讯云 COS(流程同理:获取 SecretId/SecretKey、选择地域、填写 Bucket)
C. 七牛云 Kodo(对象存储)(获取 AK/SK、空间名、域名,按插件字段填入)
若 UpdraftPlus 无你需要的国内云扩展:
- 方案 1:先备份到本地,再从
wp-content/updraft
把压缩包上传到 OSS/COS/七牛。- 方案 2:改用 All-in-One WP Migration 插件做整站包(免费版 ≤512MB)。
0.2 手工双保险(宝塔/BT)
- 点击路径:登录 宝塔面板 → 左侧 文件 → 进入网站根目录(常见:
/www/wwwroot/你的域名
) - 操作:勾选全部文件夹与文件 → 上方 压缩 → 选择 zip → 命名
site-files-backup.zip
- 下载:点文件后的 下载 保存到电脑
- 数据库:左侧 数据库 → 找到站点库 → phpMyAdmin → 选中数据库 → 上方 导出 → 快速 + SQL → 执行 → 下载
.sql
0.3 暂存站点(Staging)+ 还原演练(确保可恢复)
- 插件安装:后台 插件 → 安装插件,搜索 WP Staging → 安装 → 启用
- 点击路径:左侧 WP Staging → Sites/Start → Create New Staging Site
- 输入:名称
staging
→ 保持默认勾选 → Start Cloning - 完成后你会看到一个 staging 后台地址(如
https://域名/staging/wp-admin
),登录 - 点击路径:设置 → UpdraftPlus Backups → 还原(Restore) → 勾选数据库+插件+主题+上传+其他 → 还原
- 看到:还原成功提示;前台/后台都能正常打开 → 演练通过
成功做完本节,你就有“后悔药”。后续每个大动作前再点一次“立即备份”。
Part 1|高危加固(当天必做)
1.1 全站更新(核心/主题/插件)
- 点击路径:仪表盘 → 更新
- 操作:若提示“WordPress 有新版本” → 现在更新
- 插件:滚到插件区 → 全部勾选 → 更新插件
- 主题:对有更新提示的主题点 更新
- 看到:绿色“已更新成功”提示 → 下一步
若更新后异常:先在暂存站验证再升级正式站;或用 0.1 的备份一键还原。
1.2 安全管理员 & 删除“admin”
- 点击路径:用户 → 添加新用户
- 输入:
- 用户名:
owner_admin_随机数
(一定不要admin
) - 邮箱:常用邮箱
- 密码:点“生成密码”,自行改成 16 位强密码(大小写+数字+符号)
- 角色:管理员
- 用户名:
- 点击:添加新用户
- 退出当前帐号 → 用新帐号登录
- 点击路径:用户 → 所有用户 → 找到旧的高危账户(如
admin
)→ 删除 → 选择“将内容归属给 新账户” → 确认
1.3 改登录入口(躲避暴力破解)
- 插件:插件 → 安装插件 → 搜索
WPS Hide Login
→ 安装 → 启用 - 点击路径:设置 → 常规 → 页面底部 WPS Hide Login
- 输入:新登录地址
go-into-后台-随机
(例:go-into-2025
) - 点击:保存更改
- 测试:访问
你的域名/wp-login.php
应 404;访问你的域名/go-into-2025
出现登录页
记下新入口,避免忘记。忘了可用宝塔重命名插件目录恢复(见“脱困”)。
1.4 防火墙 + 登录 2FA(Wordfence)
- 插件:搜索
Wordfence Security
→ 安装 → 启用 - 点击路径:Wordfence → Dashboard → 初次向导 Enable Firewall → Auto-Optimize → 继续
- 2FA:Wordfence → Login Security → 找到你的管理员 → Activate
- 做法:手机装 Google Authenticator/阿里云验证器/腾讯身份宝 → 扫描二维码 → 保存备用码
- 测试:退出并再登录 → 要求输入 6 位动态码即成功
1.5 全站 HTTPS(SSL)
插件自动:
- 插件:
Really Simple SSL
→ 安装 → 启用 → 弹窗点 Activate SSL
主机证书(宝塔): - 点击路径:网站 → 选择站点 → 设置 → SSL
- 选择:申请/部署证书(可用阿里云/腾讯云免费 DV)或“其他证书”粘贴
- 勾选:强制 HTTPS → 保存
- 看到:浏览器地址栏小锁
Part 2|恶意扫描与清理
2.1 Wordfence 全盘扫描
- 点击路径:Wordfence → Scan → Start New Scan
- 等待:进度条跑完
- 看到:结果按颜色分级
- 红/高危:点 Repair/Delete(修复核心、删除木马)
- 黄/中:View Details → 过期/风险插件主题 → 更新或删除
- 再扫:直到“没有高危问题”为止
2.2 清理不用的插件/主题
- 外观 → 主题:只保留正在用的 + 一个官方默认(应急),其他 删除
- 插件 → 已安装插件:停用并 删除不再使用或长期不更新的
Part 3|系统级加固(服务器与配置)
3.1 正确权限(宝塔)
- 点击路径:文件 → 站点根目录
- 操作:
wp-config.php
→ 权限 → 输入:400
(若后台报权限问题改440
)wp-content
/wp-includes
/wp-admin
→ 权限:755
- 其他
.php
文件(不含wp-config.php
)→ 权限:644
- 下一步:刷新前台确认正常
3.2 禁止后台在线编辑
- 文件:打开
wp-config.php
(宝塔右键编辑) - 在
/* That's all, stop editing! Happy blogging. */
上方插入:
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false); // 允许后台更新(更稳:改 true 完全禁更,需手动更新)
define('FORCE_SSL_ADMIN', true); // 已上 HTTPS 后启用
- 保存 → 后台“主题/插件编辑器”入口消失或受限
3.3 重置认证密钥 SALTs(踢下线可疑会话)
- 操作:浏览器搜索“WordPress secret key generator” → 打开官方生成页
- 复制:生成的 8 行
define('AUTH_KEY',...)
等 - 编辑:
wp-config.php
中原 8 行 → 全部替换 → 保存 - 结果:所有已登录会话失效,需重登(正常)
3.4 关闭 XML-RPC
简单法(插件):
- 插件:
Disable XML-RPC
→ 安装 → 启用
Nginx/Apache 手动法:见 3.6/3.7
3.5 上传目录禁执行(阻木马)
- 点击路径:文件 → /wp-content/uploads/
- 新建文件:
.htaccess
(Apache)写入:
<Files *.php>
deny from all
</Files>
- Nginx(见 3.7):在站点 conf 中加
location ^~ /wp-content/uploads/ { location ~ \.php$ { deny all; } }
3.6 Apache .htaccess 安全头与限制
- 编辑根目录
.htaccess
,在 WP 默认规则上方加入:
# 禁止列目录
Options -Indexes# 保护敏感文件
<FilesMatch "^(wp-config\.php|readme\.html|license\.txt)$">
Require all denied
</FilesMatch># 禁止 XML-RPC
<Files xmlrpc.php>
Require all denied
</Files># 基础安全头(需 mod_headers)
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
# HSTS:全站 HTTPS 验证通过后再开,先 1 天
Header always set Strict-Transport-Security "max-age=86400; includeSubDomains; preload"
</IfModule>
- 保存 → 前台自检
3.7 Nginx 安全等效配置(宝塔 Nginx 站点 → 配置文件)
- 点击路径:网站 → 你的站点 → 设置 → 配置文件
- 在 server{} 内添加(放在 WordPress 重写规则外面更清晰):
# 禁止访问敏感文件
location ~* /(readme\.html|license\.txt|wp-config\.php)$ { deny all; }# 关闭 XML-RPC
location = /xmlrpc.php { deny all; }# uploads 禁 PHP
location ^~ /wp-content/uploads/ {location ~ \.php$ { deny all; }
}# 安全头(需 nginx_headers_more 或直接 add_header)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
# HSTS:确认 HTTPS 全站无误后再开
add_header Strict-Transport-Security "max-age=86400; includeSubDomains; preload" always;
- 保存 → 重载/重启 Nginx → 打开站点确认正常
Part 4|性能与稳定(核心 Web Vitals 友好)
主机为 LiteSpeed/OpenLiteSpeed → 用 LiteSpeed Cache(LSCWP);
其他主机 → 免费 W3 Total Cache 或付费 WP Rocket。
4A|LiteSpeed 主机(LSCache)
4A.1 安装与基础缓存
- 插件:
LiteSpeed Cache
→ 安装 → 启用 - 点击路径:LiteSpeed Cache → 缓存
- 启用缓存:开
- 移动端缓存:若移动端主题不同则开
- 浏览器缓存:开 → 保存
- 工具:清理全部缓存
4A.2 CSS/JS 优化(保守档位不容易出错)
- 点击路径:LiteSpeed Cache → 优化
- CSS/JS 压缩:开
- 延迟加载 JS:开
- 延迟内联 JS:开
- 移除未使用 CSS (UCSS):开(如样式异常,先关或仅首页)
- 清理全部缓存 → 前台检查几页(若样式乱,逐项回退)
4A.3 图片 WebP 与懒加载
- 点击路径:LiteSpeed Cache → 图像优化
- 点 一键优化
- 勾 生成 WebP + 替换为 WebP → 保存
- 点击路径:LiteSpeed Cache → 媒体
- 懒加载图像:开 → 保存
4A.4 对象缓存(Redis)
- 宝塔:软件商店 → Redis → 安装 → 设置密码
- LiteSpeed Cache → 缓存 → 对象:
- 启用:开
- 方法:Redis
- 服务器:
127.0.0.1
,端口:6379
,密码:填入 - 保存 → 清理全部缓存
- 观察:后台命中率上升即生效
4B|其他主机
4B.1 W3 Total Cache(免费)
- 插件:
W3 Total Cache
→ 安装 → 启用 - 点击路径:Performance → General Settings
- Page Cache:Enable
- Object Cache:Enable
- Browser Cache:Enable
- (Database Cache:主机性能弱先关闭)
- 顶部按钮:empty all caches
4B.2 WP Rocket(付费更省心)
- 安装 → 启用
- 设置 → WP Rocket:
- 文件优化:勾 CSS/JS 压缩;开启 Delay JS Execution
- 媒体:勾 LazyLoad 图像与 iframe;(WebP 用图片插件配合)
- 缓存:开启移动端缓存
Part 5|国内加速(CDN + 图片上云 + 去谷歌外链)
5.1 图片上云(3 选 1:七牛/阿里 OSS/腾讯 COS)
示例:七牛云(常见、好用)
- 七牛云控制台:对象存储 → 创建空间(公开),区域选离你近
- 密钥管理:记下 AK/SK
- WordPress 插件:后台 插件 → 安装插件 搜索
Qiniu/Kodo
相关插件(如 Qiniu Image Storage 或 OSS/COS 对应插件)→ 安装 → 启用 - 设置页面:
- 输入:AK/SK、空间名、加速域名(测试域名或自有 CDN CNAME)
- 勾:自动上传、替换附件 URL
- 保存 → 批量同步
- 看到:媒体库的图片 URL 变为七牛域名
若选阿里 OSS / 腾讯 COS:流程一样,换成相应插件(关键词:
OSS
、COS
),填入密钥、Bucket、域名。
5.2 接入 CDN(示例:阿里云 CDN;腾讯 CDN 同理)
- 阿里云控制台:CDN → 域名管理 → 添加域名
- 输入:加速域名(
www.你的域名.com
) - 业务类型:图片小文件
- 源站:填你服务器的 IP 或 源站域名
- 下一步 → 完成
- 输入:加速域名(
- 记录系统给的 CNAME(如
xxx.w.alikunlun.com
) - 域名解析:到你的域名服务商 → 添加 CNAME 解析
- 主机记录:
www
(或@
) - 记录值:上一步的 CNAME
- 主机记录:
- 阿里云 CDN → 域名管理 → 你的域名
- 缓存配置:添加
/wp-content/uploads/*
→ 30 天/wp-content/themes/*
/wp-content/plugins/*
→ 7–30 天
- 性能优化:开 智能压缩/Brotli
- HTTPS:上传或申请免费证书,强制跳转 HTTPS
- 缓存配置:添加
- WordPress:设置 → 常规
- 输入:
- WordPress 地址(URL):
https://你的域名
- 站点地址(URL):
https://你的域名
- WordPress 地址(URL):
- 保存更改
- 输入:
注意:后台/登录页面不要走 CDN(规则里绕过缓存
wp-admin/*
、wp-login.php
、你自定义的登录入口)。
5.3 禁用 Google 外链/字体(国内可达)
- 插件法:插件 → 安装插件 搜索
Disable Google Fonts
或Remove Google Fonts References
→ 启用 - 主题设置:若主题自带 Google Fonts 选项,切成 本地/系统字体(如
Microsoft YaHei
) - (可选)本地化字体:把常用字体文件放
/wp-content/uploads/fonts/
,CSS 里@font-face
引用本地路径
Part 6|邮件与验证码(登录/评论更稳)
6.1 WP Mail SMTP(QQ/163 邮箱示例)
- 插件:
WP Mail SMTP
→ 安装 → 启用 - 点击路径:WP Mail SMTP → Settings
- From Email:
你的QQ号@qq.com
(或 163 邮箱) - From Name:站点名
- 勾 Force From Email/Name
- Mailer:选择 Other SMTP
- From Email:
- 填写 SMTP:
- QQ:Host
smtp.qq.com
,Port465
,EncryptionSSL
,AuthOn
,UsernameQQ邮箱地址
,Password 授权码(不是登录密码,QQ 邮箱设置里获取) - 163:Host
smtp.163.com
,Port465
,EncryptionSSL
,Username163邮箱地址
,Password 授权码
- QQ:Host
- 保存设置 → Email Test 发到你的常用邮箱,看到成功即 OK
6.2 验证码/防垃圾(国内可用)
- 极验(Geetest):插件 → 安装插件 搜索
Geetest
→ 启用- 去极验官网创建应用 → 获取 ID/Key
- 插件设置里 输入 ID/Key → 保存
- 在 登录/注册/评论 打开验证码
- 纯本地反垃圾:
Antispam Bee
或WP Armour
→ 开启对评论的防护 - Wordfence 本身也有登录限制与防暴力
Part 7|计划任务与稳定运维
7.1 真 Cron(替换 WP-Cron,宝塔)
- 编辑
wp-config.php
:加一行
define('DISABLE_WP_CRON', true);
- 宝塔 → 计划任务 → 添加任务
- 任务类型:Shell 脚本
- 名称:
wp-cron
- 执行周期:每 5 分钟
- 脚本内容(输入其一):
curl -s https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
- 或
wget -q -O - https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
- 保存
- 看到:任务列表出现
wp-cron
,5 分钟跑一次
7.2 数据库清理(WP-Optimize)
- 插件:
WP-Optimize
→ 安装 → 启用 - 点击路径:WP-Optimize → 数据库
- 勾:修订版本、自动草稿、垃圾/未审评论、临时选项
- 运行优化
- 计划:设置/计划 → 每周 → 保存
7.3 Heartbeat 限制(降后台负载)
- 插件:
Heartbeat Control
→ 启用 - 设置:后台 设置 → Heartbeat Control
- 后台心跳:60s
- 编辑器心跳:30–60s
- 前台心跳:禁用 → 保存
Part 8|SEO合规
8.1 SEO 插件(Rank Math 或 Yoast)
- 插件:安装其一 → 启用 → 进入向导
- 站点类型:按实际
- XML 站点地图:开
- 建议 noindex:搜索页、作者归档(视需求)
- 固定链接:设置 → 固定链接 → 选 文章名 → 保存
8.2 站长平台 & 提交站点地图
- 百度搜索资源平台 / 360 搜索 / 必应站长:添加网站 → 验证(文件/Meta/DNS)
- 提交:
/sitemap_index.xml
(由 SEO 插件生成)
8.3 备案信息(ICP备案 + 公安备案)
- ICP备案:在云厂商(阿里/腾讯)控制台 → 备案 按向导提交
- 公安备案:工信部备案通过后 30 天内,到 全国互联网安全管理服务平台 提交
- 在页脚展示备案(示例,放
外观 → 主题文件编辑器 → footer.php
,</footer>
前):
<div class="site-icp"><a href="https://beian.miit.gov.cn/" target="_blank">粤ICP备XXXX号-1</a><a href="https://www.beian.gov.cn/portal/registerSystemInfo?recordcode=XXXXXXXXXXXXXX" target="_blank" rel="nofollow noopener"><img src="公网安备图标地址" alt="公安备案"> 粤公网安备XXXXXXXXXXXX号</a>
</div>
8.4 评论合规与隐私
- 设置 → 讨论
- 勾“评论必须经人工批准”
- 关闭“允许链接通知(Pingback/Trackback)”
- 隐私政策:新建“隐私政策”页面;需要收集信息时在表单页显著链接
Part 9|例行保养清单 & 一键脱困
9.1 周/月/季任务(打印就能勾)
每周(10 分钟)
- 仪表盘 → 更新:核心/主题/插件全更
- Wordfence 扫描:处理红/黄告警
- UpdraftPlus:确认最新云备份 ≤ 7 天
每月(20 分钟)
- 插件/主题盘点:停用即删除
- WP-Optimize:手动再清一次
- 测速:站长之家/17CE/阿里云测速;LCP/CLS 变差则回 4A/4B 微调
每季度(30 分钟)
- 还原演练(Staging)
- 重置 SALTs(3.3)
- 复核安全头/HSTS
- 用户权限复查、强制改强密码
9.2 常见故障一键脱困
- 前端样式乱(开了优化后)
→ 逐项关闭 移除未使用 CSS/JS 合并/延迟 JS → 清空缓存(插件+CDN) → 刷新 - 登录进不去(忘入口/2FA 问题)
→ 宝塔 → 文件:把/wp-content/plugins/wps-hide-login
或/wordfence
重命名 加-off
→ 访问域名/wp-login.php
紧急通道登录 → 修好后改回目录名 - 500/白屏
→ 注释/移除刚加的.htaccess/Nginx
片段 → 清缓存
→ 将缓存插件目录重命名-off
→ 若仍不行,用 UpdraftPlus 还原 - 图片不显示
→ 检查对象存储防盗链白名单是否包含你的域名
→ 刷新 CDN 缓存(阿里 CDN → 缓存刷新) - 后台很慢
→ Heartbeat 调大、对象缓存启用、减少后台统计类插件、数据库清理 - 邮件发不出
→ WP Mail SMTP 再测;确认 SMTP 授权码、端口与加密方式;主机防火墙放行 465/587
代码与配置片段汇总(用到再复制)
wp-config.php
(安全补充)
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false); // 若你希望彻底禁止后台更新,改为 true
define('FORCE_SSL_ADMIN', true); // 全站 HTTPS 后启用
define('DISABLE_WP_CRON', true); // 配合宝塔计划任务
Apache:根目录 .htaccess
(放在 WP 默认规则上方)
Options -Indexes
<FilesMatch "^(wp-config\.php|readme\.html|license\.txt)$">
Require all denied
</FilesMatch>
<Files xmlrpc.php>
Require all denied
</Files>
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=86400; includeSubDomains; preload"
</IfModule>
Nginx:站点 server{}
内
location ~* /(readme\.html|license\.txt|wp-config\.php)$ { deny all; }
location = /xmlrpc.php { deny all; }
location ^~ /wp-content/uploads/ { location ~ \.php$ { deny all; } }
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Strict-Transport-Security "max-age=86400; includeSubDomains; preload" always;
上传目录 .htaccess
(Apache)
<Files *.php>
deny from all
</Files>
宝塔计划任务命令(择一)
curl -s https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
# 或
wget -q -O - https://你的域名/wp-cron.php?doing_wp_cron >/dev/null 2>&1
给你一张“今日必做”勾选卡(照抄就行)
- UpdraftPlus 云备份到 OSS/COS/七牛
- 暂存站克隆 + 还原演练
- 核心/主题/插件全部更新
- 新建安全管理员 & 删除
admin
- 修改登录入口 + 开 2FA
- 开启全站 HTTPS
- Wordfence 全盘扫描并处置
- 删不用插件/主题
- 权限 755/644 &
wp-config.php
400/440 - 禁 XML-RPC & uploads 目录禁执行
- 安全头/HSTS(确认 HTTPS 后)
- 选择 LSCache 或 W3TC/WP Rocket,并启用 LazyLoad + WebP
- 开启 Redis 对象缓存(可选)
- 关闭 WP-Cron,宝塔真 Cron
- 图片上云(七牛/OSS/COS) + 接入国内 CDN
- 禁用 Google 字体/外链
- 配置 WP Mail SMTP(QQ/163)
- 评论审核/验证码(极验或本地防 spam)
- 备案信息展示、提交站点地图