Как защитить WordPress от размещения вредоносных файлов в каталогах загрузок

Одной из уязвимостей безопасности WordPress является возможность загрузки злоумышленниками вредоносных файлов в каталоги загрузок сайта. Если не ограничить этот процесс, такие файлы могут быть использованы для дальнейших атак, внедрения бекдоров, кражи данных или размещения вредоносного кода.

Почему каталоги загрузок в WordPress уязвимы

Папка wp-content/uploads по умолчанию доступна для записи, чтобы пользователи могли загружать медиафайлы — изображения, видео, документы. Однако именно эта открытость может быть использована для загрузки не только безопасных файлов, но и исполняемых скриптов (например, PHP-файлов), которые могут привести к компрометации сайта.

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

Ограничение типов файлов с помощью плагинов

Для решения задачи можно использовать плагины, которые позволяют настроить белый список разрешённых форматов файлов:

  • WP Upload Restrictions — позволяет гибко ограничить типы файлов по MIME-типу и расширению;
  • File Upload Types by WPShop — плагин с удобным интерфейсом для добавления и удаления разрешённых расширений, доступен на wpshop.ru;
  • Prevent PHP Upload — автоматически блокирует загрузку PHP-файлов и скриптов.

Использование таких плагинов значительно снижает риск загрузки вредоносных исполняемых файлов через стандартные формы загрузки медиа.

Запрет выполнения PHP в каталогах uploads через .htaccess

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

Создайте или отредактируйте файл wp-content/uploads/.htaccess и добавьте туда следующий код:

# Запрет выполнения PHP в uploads
<FilesMatch "\.(php|php5|phtml)$">
    Order deny,allow
    Deny from all
</FilesMatch>

# Блокируем скрипты CGI
<Files "*.cgi">
    Order deny,allow
    Deny from all
</Files>

Этот блок запретит выполнение любых PHP-скриптов, даже если они случайно окажутся в каталоге загрузок. Аналогично можно добавить запрет на другие исполняемые расширения, если это необходимо.

Пример функции для ограничений загрузки в functions.php

Если вы хотите реализовать ограничение типов файлов программно, можно добавить следующий код в functions.php вашей темы или в кастомный плагин:

function wpprotect_restrict_upload_mimes($mimes) {
    // Разрешённые типы файлов
    $allowed_mimes = [
        'jpg|jpeg|jpe' => 'image/jpeg',
        'png' => 'image/png',
        'gif' => 'image/gif',
        'pdf' => 'application/pdf',
        'doc|docx' => 'application/msword',
        'xls|xlsx' => 'application/vnd.ms-excel',
        'ppt|pptx' => 'application/vnd.ms-powerpoint'
    ];

    return $allowed_mimes;
}
add_filter('upload_mimes', 'wpprotect_restrict_upload_mimes');

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

Дополнительные меры защиты и рекомендации

1. Регулярный аудит загруженных файлов

Периодически проверяйте содержимое каталога wp-content/uploads на наличие подозрительных файлов. Для автоматизации можно использовать сканеры безопасности, например, Wordfence или WPScan.

2. Использование плагина Clearfy Pro для безопасности

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

3. Ограничение доступа к каталогам через права файловой системы

Установите правильные права доступа на папки и файлы: обычно 755 для папок и 644 для файлов — это оптимальный вариант, который предотвращает запись и выполнение файлов посторонними процессами.

4. Использование Content Security Policy (CSP)

Настройте заголовки CSP, чтобы ограничить выполнение скриптов и загрузку ресурсов только с доверенных источников вашего сайта.

Итог

Защита каталога загрузок — важный шаг к безопасности WordPress. Ограничение типов файлов, запрет выполнения PHP через .htaccess и использование проверенных плагинов помогут избежать проникновения вредоносного кода и сохранить целостность вашего сайта.

Как защитить WordPress от хакерных атак через REST API
16.12.2025
Как защитить WordPress от привилегированных пользователей с помощью кодексов ролей
30.03.2026
Как защитить WordPress от привилегированных пользователей: методы и примеры кода
25.01.2026
WooCommerce: как использовать хуки для модификации корзины
28.05.2026
Как использовать nonces в WordPress для защиты форм и AJAX-запросов
01.05.2026