wpcorp.ru wordpress WP Corp

WooCommerce: как запретить загрузку файлов определённых типов для цифровых товаров

Диагностика проблемы: почему нужно ограничивать типы файлов в загрузках WooCommerce

В WooCommerce при продаже цифровых товаров покупатель получает ссылку на файл для скачивания. Однако по умолчанию система не ограничивает типы загружаемых файлов, что может привести к загрузке нежелательных форматов (например, исполняемых файлов .exe, скриптов .php, которые небезопасны). Это может стать проблемой безопасности и ухудшить пользовательский опыт.

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

Пошаговое решение: запрет загрузки определённых типов файлов в WooCommerce

1. Использование фильтра woocommerce_file_download_mimes для ограничения MIME-типов

WooCommerce позволяет настроить допустимые MIME-типы для загрузок с помощью фильтра woocommerce_file_download_mimes. Вставьте следующий код в файл functions.php вашей дочерней темы или в отдельный плагин:

add_filter('woocommerce_file_download_mimes', 'wpcorp_restrict_woocommerce_download_mimes');
function wpcorp_restrict_woocommerce_download_mimes($mimes) {
    // Разрешённые MIME-типы для загрузок
    return [
        'pdf'  => 'application/pdf',
        'zip'  => 'application/zip',
        'jpg'  => 'image/jpeg',
        'jpeg' => 'image/jpeg',
        'png'  => 'image/png',
        'mp3'  => 'audio/mpeg',
        // Добавьте необходимые форматы
    ];
}

Этот код заменит список разрешённых типов файлов только на указанные. Любые другие типы загрузок будут заблокированы.

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

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

Проверка результата после внедрения

  1. Создайте цифровой товар с файлом разрешённого типа (например, PDF). Попробуйте скачать — файл должен быть доступен.
  2. Попробуйте загрузить файл с запрещённым расширением (например, .exe или .php) через интерфейс товара — загрузка должна быть запрещена или файл не должен работать при скачивании.
  3. Проверьте ссылку на скачивание, убедитесь, что файл корректно открывается и загружается.

Частые ошибки и как их исправить

  • Ошибка: Загружается файл с запрещённым расширением.
    Причина: Фильтр не подключён или конфликт плагинов.
    Решение: Проверьте, что код добавлен в активную тему или плагин, отключите временно плагины, влияющие на загрузки.
  • Ошибка: Разрешённые файлы не скачиваются.
    Причина: MIME-тип указан неверно.
    Решение: Проверьте правильность MIME-типа через mime_content_type() или онлайн-справочники.
  • Ошибка: Пользователи жалуются на ошибки безопасности.
    Причина: Отсутствие проверки расширений на сервере.
    Решение: Добавьте серверные правила (например, в .htaccess) для блокировки опасных расширений.

Практические советы по безопасности и производительности

  • Используйте только необходимые типы файлов для загрузок, избегайте .exe, .php, .js и других скриптов.
  • Настройте права доступа в папке загрузок, чтобы исключить выполнение файлов.
  • Используйте плагины для сканирования загружаемых файлов на вирусы, если магазин работает с большим количеством цифрового контента.
  • Для оптимизации скорости загрузок храните файлы на CDN или внешних хранилищах.

Сравнение способов ограничений загрузок в WooCommerce

Метод Описание Плюсы Минусы
Фильтр woocommerce_file_download_mimes Ограничение MIME-типов PHP-кодом Легко внедряется, гибкий Требует знаний PHP, не блокирует серверные атаки
Плагины безопасности Использование готовых плагинов для фильтрации загрузок Простота настройки, дополнительно защищают сайт Нагрузка на сайт, возможны конфликты
Серверные правила (.htaccess, nginx) Блокировка опасных расширений на уровне сервера Высокая безопасность, надежность Требует доступа к серверу, сложность настройки
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙