搜索全站
安全防护 9 分钟阅读

wp-config.php 安全加固:关闭文件编辑并更换安全密钥

wp-config.php 是 WordPress 最关键的配置文件,安全密钥泄露或允许后台编辑代码都极其危险。本文手把手教你关闭文件编辑器、更换八组安全密钥、设置正确的文件权限并收紧数据库连接,一次把 WordPress 配置层的安全漏洞全部补上。

U
UFO_PF 2026-10-10 · 阅读 9 分钟
wp 安全防护
阅读提示
本文约 3,266 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

wp-config.php 是 WordPress 的心脏:数据库密码、安全密钥、表前缀全在这里。它一旦泄露或配置不当,攻击者就能直接接管整站。举个常见场景:后台「外观 → 主题文件编辑器」默认是开放的,只要攻击者拿到一个管理员账号,就能在网页上直接改 functions.php 写入后门,连 FTP 都不用。再比如,八组安全密钥(AUTH_KEY、SECURE_AUTH_KEY 等)如果是从别处复制来的、或从来没换过,攻击者就能伪造登录 Cookie 直接冒充你。很多站长只关注改密码,却忽略了 wp-config.php 这层最该加固的地方。本文把最实用的几项配置改动一次讲清,照着改完,站点安全等级立刻上一个大台阶。

故障原因分析

  1. 后台文件编辑器默认开启。WordPress 允许管理员在后台直接编辑主题和插件文件,脚本一旦拿到管理员权限,第一件事就是往里写后门,无需任何服务器权限。
  1. 安全密钥沿用旧值或与他人相同。密钥用于加密登录 Cookie,若长期不换或从网上抄来,等于给了攻击者伪造合法登录态的可能。
  1. wp-config.php 文件权限过宽。文件被设成 777 或可被 Web 用户写入,任何漏洞都可能直接读取数据库密码。
  1. 调试模式长期开启。WP_DEBUG 打开会向前台暴露文件路径、数据库结构等敏感信息,为攻击者提供便利。
  1. 数据库账号权限过大。用 root 账号连库、且只给一个站点用,一旦被注入就是整库沦陷。

分步解决方案

方法一:关闭后台文件编辑(DISALLOW_FILE_EDIT)

编辑网站根目录的 wp-config.php,在 / That's all, stop editing! / 注释之前加入:

// wp-config.php —— 禁止后台编辑主题与插件文件
define( 'DISALLOW_FILE_EDIT', true );

保存后刷新后台,「外观 → 主题文件编辑器」和插件编辑器会自动消失。这一步能有效阻止「拿到后台即写入后门」的攻击链。

如果你连后台安装/删除插件的权限都想收紧(适合已经配置好、不再频繁改动的生产站),可以再加上:

// 禁止后台安装、更新、删除主题与插件(谨慎使用,会影响在线更新)
define( 'DISALLOW_FILE_MODS', true );

注意 DISALLOW_FILE_MODS 会让后台的插件更新功能一并失效,改动前请确保你有能力用 FTP/命令行手动升级。

方法二:更换全部八组安全密钥

WordPress 需要八组密钥:AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY、NONCE_KEY、AUTH_SALT、SECURE_AUTH_SALT、LOGGED_IN_SALT、NONCE_SALT。打开官方在线生成器 https://api.wordpress.org/secret-key/1.1/salt/,它会给出全新的随机值。把 wp-config.php 里从 define( 'AUTH_KEY', ... ) 到 define( 'NONCE_SALT', ... ) 这八行整段替换掉。

// wp-config.php —— 用官方生成器产出的新值替换,注意每行都不相同
define( 'AUTH_KEY',         '把这里换成生成器给你的新随机串' );
define( 'SECURE_AUTH_KEY',  '把这里换成生成器给你的新随机串' );
define( 'LOGGED_IN_KEY',    '把这里换成生成器给你的新随机串' );
define( 'NONCE_KEY',        '把这里换成生成器给你的新随机串' );
define( 'AUTH_SALT',        '把这里换成生成器给你的新随机串' );
define( 'SECURE_AUTH_SALT', '把这里换成生成器给你的新随机串' );
define( 'LOGGED_IN_SALT',   '把这里换成生成器给你的新随机串' );
define( 'NONCE_SALT',       '把这里换成生成器给你的新随机串' );

换密钥的副作用是:所有用户(包括你自己)会被强制重新登录一次。这正是我们想要的——被盗用的旧登录 Cookie 立刻失效。建议每半年更换一次,怀疑被入侵时立即更换。

方法三:设置正确的文件权限

wp-config.php 只需要被 Web 服务器读取,不需要写入。通过 SSH/FTP 把它设成 644(或更严格的 600):

chmod 644 /www/wwwroot/yoursite.com/wp-config.php
# 目录统一 755,文件统一 644
find /www/wwwroot/yoursite.com -type d -exec chmod 755 {} \;
find /www/wwwroot/yoursite.com -type f -exec chmod 644 {} \;

宝塔用户可以在「文件」里右键该文件 →「权限」,把数字改成 644,并勾选「应用到子目录」时谨慎操作(子目录建议单独设 755)。

方法四:关闭调试模式并收紧数据库账号

生产环境务必关掉调试:

// wp-config.php —— 线上关闭调试,避免泄露路径信息
define( 'WP_DEBUG', false );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', false );

排查数据库连接:给这个站点单独建一个数据库账号,而不是用 root;该账号只授予这个库的 SELECT, INSERT, UPDATE, DELETE 等必要权限,不要给 DROP、GRANT 等危险权限。这样即使出现注入,损失也被限制在单库内。

方法五:给 wp-config.php 加一层访问限制

在网站根目录 .htaccess 里禁止直接访问该文件:

<files wp-config.php>
    order allow,deny
    deny from all
</files>

另外把 wp-config.php 移到 wp-content 之外的上一级目录(WordPress 支持从上级目录读取)也是一种进阶做法,能进一步降低被直接命中的概率。

常见踩坑点

  1. 密钥替换时改乱了行。八组密钥必须一一对应,复制时漏行或错位会导致登录异常,务必整段替换、逐一核对。
  1. 误开 DISALLOW_FILE_MODS 导致无法在线更新。它连插件更新一起禁掉,生产站如需在线更新就不要开,或用完后移除。
  1. 权限设成 777。图省事把 wp-config.php 设 777,等于让任何脚本都能改它,是典型的反向操作。
  1. 改完不验证站点。修改配置后一定要复查首页和后台能否正常访问,别改完就走人。
  1. 忘记备份旧文件。动手前先复制一份 wp-config.php 到本地,改坏了能立刻还原。
  1. 密钥换了却没检查多站点。多站点网络换密钥同样会强制全员重新登录,建议避开业务高峰操作。

总结

wp-config.php 是 WordPress 安全的第一道关卡,却常被站长忽视。把 DISALLOW_FILE_EDIT 打开,能堵住「拿到后台就能写后门」的捷径;定期更换八组安全密钥,能让被盗的登录 Cookie 立即作废;再配合 644 文件权限、关闭调试模式、使用最小权限数据库账号和 .htaccess 访问限制,整套配置层加固就成型了。这些改动都在一个文件里,花十分钟就能完成,收益却很长。做好 wp-config.php 安全加固,是每个站长都该尽早补上的一课。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。