Как добавить проверку вирусов при загрузке файлов в WordPress

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

Зачем нужна проверка вирусов при загрузке файлов в WordPress

Многие пользователи могут случайно или намеренно загрузить заражённый файл, который впоследствии может повредить сайт или сервер. Вредоносный код в файлах приводит к взлому, утечке данных или попаданию сайта в черные списки поисковых систем.

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

Проверка файлов позволяет обнаружить и заблокировать потенциально опасные объекты до их сохранения на сервере. Это повышает общую безопасность сайта и защищает посетителей.

Способы добавить проверку вирусов при загрузке в WordPress

Использование плагинов с интеграцией антивирусов

Существуют готовые плагины, которые обеспечивают защиту медиафайлов, проводя сканирование через популярные антивирусные движки. Например:

  • Antivirus for WordPress — интегрирует ClamAV и другие движки, автоматически проверяет загружаемые файлы.
  • Secure Upload — расширяет стандартную загрузку, добавляет проверку и блокировку опасных файлов.

Подобные плагины имеют удобный интерфейс и позволяют настроить уровни проверки и уведомления.

Интеграция ClamAV через PHP-код

Если хотите реализовать проверку самостоятельно, можно использовать ClamAV — популярный бесплатный антивирус с поддержкой командной строки и API.

Пример функции для проверки загружаемого файла с помощью ClamAV на сервере (Linux):

function wpupload_check_file_virus($file_path) {
    // Путь к утилите clamscan
    $clamscan = '/usr/bin/clamscan';
    if (!file_exists($clamscan)) {
        return false; // ClamAV не установлен
    }
    // Выполняем проверку файла
    $command = escapeshellcmd($clamscan) . ' --no-summary ' . escapeshellarg($file_path);
    exec($command, $output, $return_var);
    // Если return_var == 0, файл чистый
    // Если 1 — вирус найден
    return $return_var === 0;
}

Далее эту функцию можно привязать к загрузке файлов через хук wp_handle_upload_prefilter:

add_filter('wp_handle_upload_prefilter', 'wpupload_check_upload_virus');
function wpupload_check_upload_virus($file) {
    // Загружаем временный файл
    $tmp_name = $file['tmp_name'];
    if (!wpupload_check_file_virus($tmp_name)) {
        $file['error'] = 'Файл содержит вирусы и не может быть загружен.';
    }
    return $file;
}

Такой подход позволяет остановить загрузку файла, если обнаружена угроза.

Практические советы по улучшению безопасности загрузок

Кроме антивирусной проверки, стоит учитывать и другие меры безопасности:

  • Ограничение типов файлов: разрешайте загружать только необходимые форматы (например, изображения png, jpg, pdf).
  • Ограничение размера файлов: предотвращайте загрузку чрезмерно больших файлов, которые могут перегрузить сервер.
  • Переименование файлов: чтобы избежать конфликтов и эксплойтов, меняйте имена загружаемых файлов на безопасные и уникальные.
  • Использование отдельных папок для загрузок: с ограниченными правами доступа, чтобы снизить риск выполнения вредоносного кода.

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

Пример комплексной реализации проверки и ограничения загрузок

Ниже пример кода, который проверяет файл на вирусы (через ClamAV), ограничивает типы и размер, и переименовывает файлы:

add_filter('wp_handle_upload_prefilter', 'wpupload_secure_upload_filter');
function wpupload_secure_upload_filter($file) {
    $allowed_types = ['image/jpeg', 'image/png', 'application/pdf'];
    $max_size = 5 * 1024 * 1024; // 5 Мб

    // Проверка типа
    if (!in_array($file['type'], $allowed_types)) {
        $file['error'] = 'Тип файла не поддерживается.';
        return $file;
    }

    // Проверка размера
    if ($file['size'] > $max_size) {
        $file['error'] = 'Размер файла превышает 5 Мб.';
        return $file;
    }

    // Проверка на вирусы
    if (!wpupload_check_file_virus($file['tmp_name'])) {
        $file['error'] = 'Файл содержит вирусы и не может быть загружен.';
        return $file;
    }

    // Переименование файла
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $new_name = uniqid('upload_', true) . '.' . $ext;
    $file['name'] = $new_name;

    return $file;
}

Этот код можно добавить в файл functions.php активной темы или в собственный плагин.

Заключение

Добавление проверки вирусов при загрузке файлов — важный этап повышения безопасности WordPress-сайта. Использование готовых плагинов или собственных решений на базе ClamAV позволяет эффективно блокировать потенциально опасные файлы. Вкупе с ограничением типов и размеров файлов, а также с применением переименования и разграничения доступа, это создаёт надёжный щит от угроз.

Подробнее о безопасности и оптимизации WordPress можно узнать на WPSHOP.RU.

Как разрешить и использовать WooCommerce REST API в WordPress
09.11.2025
Как избежать повторной загрузки файлов в WordPress
13.12.2025
Как защитить загруженные файлы в WordPress от прямого доступа
05.02.2026
Не работает загрузка файлов в WordPress при ограничениях сервера: как исправить
17.12.2025
Как сохранить и оптимизировать базу данных WordPress
18.11.2025

wp upload - это директория в WP для загрузки файлов. Подробнее про загрузку файлов в админку можно почитать на этой странице.