Назад | Перейти на главную страницу

Запретить доступ к файлам «bat» в Apache

Я хочу запретить прямой доступ к некоторым конфиденциальным файлам в моем корневом приложении (например, log, sh, ini ... и т. Д.). и по этой причине я использовал следующую директиву в моем основном .htaccess:

<FilesMatch  "\.(htaccess|htpasswd|ini|log|sh|inc|bak|md|txt|lock|phar|bat)$|action.bat|composer.json|VERSION.*">
  Require all denied
</FilesMatch>

странно то, что он отлично работает для всех файлов, перечисленных в FileMatch, за исключением файлов с расширением (.bat), которые я еще не понял, почему они все еще загружаются с использованием прямого доступа по URL. Конфигурация:

Версия компонентов XAMPP:


Обновить:

на самом деле я обнаружил, что сопоставление шаблонов работает со всеми файлами ".bat", кроме файлов с именем "action"! если я поменяю имя на другое (скажем, «действие1»), оно будет работать нормально.

Вы можете добавить следующее в свой файл vhost

Чтобы запретить доступ к определенным файлам

<Files *.bat>
    Order allow,deny
    Deny from all
</Files>

Вы можете добавить свой тип расширения в соответствии с вашими требованиями.

Регулярное выражение, которое у вас есть, должно работать. Вы также сможете удалить action.bat| и он должен работать так же. Если ваш файл не заканчивается на .bat, это может вызвать проблемы.

Упрощенное объяснение того, что он делает:

\.(htaccess|htpasswd|ini|log|sh|inc|bak|md|txt|lock|phar|bat)$
|||                                                          |
||^Any string within brackets (separated with | as "or")     |
|^Any character or . when escaped     End of filename marker ^
^Escape character

Попробуйте перезапустить сервер, убедитесь, что вы работаете в правильном каталоге, и убедитесь, что ничто другое не противоречит правилам, которые вы устанавливаете в этом .htaccess.