NGINX
#nginx#bitrix#security#upload#deny#php

Nginx: запрет выполнения PHP в /upload (1С-Битрикс)

Отключение выполнения PHP-файлов в каталоге /upload для сайтов на 1С-Битрикс. Рекомендация по безопасности Bitrix: upload не предназначен для выполнения скриптов.

Как использовать

  1. Добавьте блок location внутрь нужного server { } в конфигурации Nginx.
  2. Разместите его до общего location ~ \.php$ или убедитесь, что более специфичный location обрабатывается первым.
  3. Перезагрузите конфиг: nginx -t && systemctl reload nginx (или sudo service nginx reload).

В документации 1С-Битрикс каталог /upload предназначен для загружаемых файлов (изображения, документы), а не для выполнения PHP. На многих серверах по умолчанию запросы к /upload/*.php всё равно передаются в PHP-FPM, что создаёт риск при попадании вредоносного файла. Запрет выполнения PHP в /upload на уровне веб-сервера устраняет эту возможность.

# Запрет выполнения любых .php в каталоге /upload
location ~* ^/upload/.*\.php$ {
    deny all;
}

Где размещать

Внутри блока server { ... } для вашего домена, например после общих правил для статики и до location ~ \.php$. Nginx выбирает location по приоритету; этот правило перехватывает все URI вида /upload/.../*.php.

Проверка

После перезагрузки Nginx запрос к https://ваш-сайт.ru/upload/любой_файл.php должен возвращать 403 Forbidden.

Замечания

  • В /upload не должно быть легитимных PHP-скриптов; если у вас кастомная логика в подкаталогах upload — вынесите её в /local или другой каталог.
  • Рекомендации по безопасности Bitrix: Безопасность приложений.