Nginx: запрет выполнения PHP в /upload (1С-Битрикс)
Отключение выполнения PHP-файлов в каталоге /upload для сайтов на 1С-Битрикс. Рекомендация по безопасности Bitrix: upload не предназначен для выполнения скриптов.
Как использовать
- Добавьте блок location внутрь нужного server { } в конфигурации Nginx.
- Разместите его до общего location ~ \.php$ или убедитесь, что более специфичный location обрабатывается первым.
- Перезагрузите конфиг: 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: Безопасность приложений.