Уязвимости wp-config.php: усиление защиты WordPress

Пока wp-config.php был открыт в vi, swap-копия (.swp), появившаяся в той же папке, открывалась прямо по веб-адресу. Это подтверждено на этом сайте 2026-09-13, и в той копии были и пароль базы данных, и все ключи безопасности.
Безопасность wp-config.php проверяется по шести пунктам ниже — по порядку, сверху вниз.
1️⃣ Что будет, если wp-config.php окажется доступен извне
В wp-config.php хранятся имя, пользователь и пароль базы данных, а также 8 ключей безопасности, которыми шифруются cookie входа.

Если этот файл окажется доступен извне, злоумышленник сможет напрямую подключиться к базе данных или с помощью ключей безопасности подделать сеанс входа и получить права администратора.
2️⃣ Ограничение прав на файл до 600
В WordPress папкам обычно ставят 755, а файлам 644, но права на wp-config.php ограничивают до 600, чтобы читать и изменять его мог только владелец. Ниже — команда, выполненная на тестовом сайте testpilotweb.com.
chmod 600 /home/testpilotweb/www/wp-config.php
stat -c '%a %U' /home/testpilotweb/www/wp-config.php
600 testpilotwebНа серверах, где PHP запускается не от имени владельца файла, а от другой учётной записи, при правах 600 WordPress не сможет прочитать этот файл и сайт не откроется. На testpilotweb.com PHP-FPM запускается от той же учётной записи, что и владелец, поэтому и после изменения сайт открывался нормально.
На виртуальном хостинге без SSH то же значение задают в меню прав доступа FTP-клиента или файлового менеджера cPanel.
3️⃣ Блокировка доступа на уровне веб-сервера
Если права изменить нельзя или нужен ещё один уровень защиты, настройте веб-сервер так, чтобы он отклонял сами запросы к wp-config.php.
🔲 Apache (.htaccess)
<Files wp-config.php>
Require all denied
</Files>Часто встречающиеся в старых статьях [order allow,deny]·[deny from all] — это синтаксис Apache 2.2. В Apache 2.4 они работают, только если включён модуль совместимости (mod_access_compat).
🔲 nginx
nginx не читает .htaccess, поэтому правило [location] добавляют в файл конфигурации сервера; этот сайт тоже отдаёт 403 именно так.
location ~* /wp-config(-sample)?\.php$ {
deny all;
}Точку в регулярном выражении экранируют как [\.]. Если оставить точку как есть, будут заблокированы и адреса записей вроде [/wp-config-php-osnovnye-nastroyki/] — на этом сайте из-за такой же ошибки однажды запись не открывалась и отдавала 403.
4️⃣ Блокировка временных файлов редактора и резервных копий
Копия [.swp], которая появляется, пока файл открыт в vi, и копия [.bak], оставленная перед правкой, не выполняются как PHP, а отдаются как обычный текст.
В nginx оба вида отсекаются вместе; [444] — собственный код nginx, который закрывает соединение без ответа.
location ~ \.sw[opx]$ { return 444; }
location ~* (\.(bak|orig|old|save)|_ori|\.bak\.[0-9]+)$ { return 444; }5️⃣ Перенос на уровень выше веб-корня
WordPress сначала ищет wp-config.php в папке установки, а если его там нет, загружает из папки уровнем выше. Если перенести файл на уровень выше, за пределы [public_html], по веб-адресу до него уже не добраться.
Однако если в папке выше лежит [wp-settings.php] другой установки WordPress, WordPress не будет читать wp-config.php из этой папки. После переноса сразу проверьте, открываются ли сайт и админ-панель.
6️⃣ Отключение редактирования файлов
Эта настройка отключает в консоли WordPress меню «Редактор тем» и «Редактор плагинов» — это одна из самых сильных мер защиты: даже если злоумышленник захватит права администратора, внедрить вредоносный код через веб-интерфейс он не сможет.
define('DISALLOW_FILE_EDIT', true); 7️⃣ Удаление wp-config-sample.php
wp-config-sample.php — файл-образец, который используется при установке, поэтому после её завершения его можно удалить. Конфиденциальных данных в нём нет, но злоумышленники ищут этот файл по стандартному пути, так что оставлять его незачем.
Значение каждого пункта файла-образца разобрано в статье Основные настройки wp-config.php на примере реальных строк этого файла. Если файл не удалять, часть [(-sample)?] правила nginx выше заблокирует и его.
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.