Как защитить WordPress от PHP File Injection

PHP File Injection — одна из распространённых угроз для WordPress-сайтов, при которой злоумышленники пытаются загрузить или внедрить вредоносные PHP-скрипты на сервер. Эти скрипты могут дать полный контроль над сайтом, украсть данные пользователей или использовать сервер для рассылки спама. В этой статье мы подробно разберём, как эффективно защититься от этой угрозы на уровне кода и настроек.

Что такое PHP File Injection и как она происходит

PHP File Injection — атака, при которой злоумышленник загружает на сервер вредоносный PHP-файл. Обычно это происходит через уязвимости в плагинах, темах или в самой CMS, например, через недостаточную проверку загружаемых файлов или обход ограничений.

Основные пути внедрения вредоносных PHP-файлов:

  • Загрузка файлов через уязвимые формы загрузки;
  • Использование уязвимостей в плагинах с функцией редактирования файлов;
  • Обход ограничений с помощью специальных техник (например, двойные расширения: file.php.jpg);
  • Выполнение удалённого включения файлов (Remote File Inclusion).

Если не предпринять меры, это может привести к компрометации всего сайта и сервера.

Практические методы защиты от PHP File Injection

Ограничение типов загружаемых файлов

Самый простой и эффективный способ — запретить загрузку PHP-файлов и других исполняемых скриптов через стандартный механизм загрузки WordPress. Для этого в файл functions.php вашей темы или в плагин можно добавить следующий код:

function wpprotect_restrict_upload_mimes( $mimes ) {
    unset( $mimes['php'] );
    unset( $mimes['phtml'] );
    unset( $mimes['php3'] );
    unset( $mimes['php4'] );
    unset( $mimes['php5'] );
    return $mimes;
}
add_filter( 'upload_mimes', 'wpprotect_restrict_upload_mimes' );

Этот код удаляет из списка разрешённых MIME-типов все варианты PHP-файлов, что исключает их загрузку через медиа-загрузчик WordPress.

Настройка .htaccess для запрета исполнения PHP в папках с загрузками

Даже если вредоносный PHP-файл каким-то образом попадёт в папку загрузок (wp-content/uploads), его исполнение можно запретить на уровне веб-сервера.

Для Apache создайте или отредактируйте файл .htaccess в папке wp-content/uploads со следующим содержимым:

# Запретить исполнение PHP в папке uploads
<Files *.php>
    deny from all
</Files>

Для Nginx добавьте в конфигурацию сайта:

location ~* /wp-content/uploads/.*\.php$ {
    deny all;
}

Это простое, но мощное правило предотвращает запуск PHP-файлов в папке с медиафайлами.

Использование проверенных плагинов безопасности

Для комплексной защиты от разных видов инъекций и атак рекомендуется использовать специализированные плагины. Например:

  • Clearfy Pro — мощный инструмент для оптимизации и безопасности, включает функции ограничения загрузок, фильтрации запросов и многое другое;
  • WPRemark — помогает отслеживать изменения файлов и уведомляет о подозрительной активности;
  • Wordfence Security — популярный бесплатный плагин, который сканирует сайт на наличие вредоносных файлов.

Как программно проверять загружаемые файлы на безопасность

Если вы пишете свой плагин или тему с функцией загрузки файлов, рекомендуется дополнительно проверять содержимое файлов. Например, можно проверять, что загружаемый файл не содержит PHP-кода.

Пример функции проверки загрузки в WordPress с префиксом wpprotect_:

function wpprotect_check_uploaded_file( $file ) {
    $content = file_get_contents( $file['tmp_name'] );
    if ( preg_match( '/<\?php/i', $content ) ) {
        return new WP_Error( 'wpprotect_php_detected', 'Загрузка PHP файлов запрещена.' );
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'wpprotect_check_uploaded_file' );

Этот фильтр проверяет содержание файла перед загрузкой и отклоняет файл с PHP-кодом, даже если его расширение не .php.

Мониторинг и реагирование на подозрительную активность

Даже после всех мер стоит настроить мониторинг файловой системы и логов. Для этого подойдут плагины типа Expert Review, которые позволяют отслеживать неожиданные изменения в файлах и быстро реагировать.

Помимо плагинов, можно периодически запускать сканеры вредоносного кода, например, WP-CLI с командой для поиска PHP-инъекций.

Выводы и рекомендации

Защита от PHP File Injection — это сочетание нескольких уровней:

  • Ограничение типов загружаемых файлов;
  • Запрет исполнения PHP в папках загрузок;
  • Использование проверенных плагинов безопасности;
  • Программные проверки загружаемых файлов;
  • Мониторинг изменений и активность.

Следуя этим рекомендациям, вы значительно снизите риск компрометации своего WordPress-сайта через PHP File Injection. Не забывайте регулярно обновлять плагины и ядро WordPress, так как многие уязвимости закрываются именно в обновлениях.

Как защитить WordPress от SQL-инъекций с высокой вероятностью успешной защиты
17.01.2026
Как защитить WordPress от привилегированных пользователей с помощью двухфакторной авторизации
09.03.2026
Как защитить WordPress от атак Backdoor с использованием пакета WPProtect
06.04.2026
Как защитить WordPress от привилегированных пользователей с помощью ролевой системы
26.02.2026
Как исправить дублирование SKU в WooCommerce: диагностика и практические решения
06.05.2026