APACHE
#apache#bitrix#security#upload#htaccess#php

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

Отключение выполнения PHP в каталоге upload для сайтов на 1С-Битрикс: через .htaccess (Require all denied) или php_admin_flag engine off в конфиге виртуального хоста.

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

  1. Вариант 1: положите .htaccess в каталог /upload/ сайта; нужен AllowOverride All (или хотя бы FileInfo) для этой директории.
  2. Вариант 2: добавьте блок Directory в конфиг виртуального хоста и перезапустите Apache.
  3. Проверьте: запрос к /upload/любой_файл.php должен возвращать 403 или не выполнять скрипт.

В 1С-Битрикс каталог /upload не предназначен для выполнения PHP (документация Bitrix). На Apache выполнение можно запретить двумя способами: через .htaccess в самом каталоге или через директиву в конфигурации виртуального хоста.

Вариант 1: .htaccess в каталоге upload

Файл размещается по пути: корень сайта/upload/.htaccess

# /upload/.htaccess — запрет выполнения всех .php в этой папке и подпапках
<FilesMatch "\.php$">
    Require all denied
</FilesMatch>

Для работы .htaccess у директории должен быть разрешён AllowOverride (например, AllowOverride FileInfo или AllowOverride All) в конфиге хоста.

Вариант 2: конфигурация виртуального хоста

Подходит если вы управляете конфигом Apache напрямую (VPS, выделенный сервер).

<Directory /var/www/site/upload>
    php_admin_flag engine off
</Directory>

Замените /var/www/site/upload на фактический путь к каталогу upload вашего сайта. После изменения перезапустите Apache (systemctl restart apache2 или service httpd restart).

Замечания

  • С способом 1 запрос к /upload/file.php обычно возвращает 403 Forbidden.
  • С способом 2 PHP не обрабатывает такие файлы (движок PHP в этой директории выключен).
  • В /upload не должно быть рабочих PHP-скриптов; если есть кастомная логика — перенесите её в /local или другой каталог.