Что такое формат файла HTACCESS?
.htaccess - это файл конфигурации веб-сервера Apache. В отличие от большинства файлов, .htaccess не содержит имени перед точкой - начальная точка является частью самого имени, что делает его скрытым файлом по умолчанию в Linux и macOS. Файлы .htaccess не должны редактироваться вручную неавторизованными или неквалифицированными пользователями. Файл хранит все настройки в виде простого текста.
Файлы .htaccess содержат параметры конфигурации для конкретного каталога, которые определяют такие функции сервера, как:
- индексная (стандартная) страница каталога,
- ограничения доступа для определенных IP-адресов,
- пользовательские страницы ошибок (например, «404 Страница не найдена»),
- перенаправления и перезапись URL (
RewriteRule/RewriteCond), - защита каталогов паролем (
AuthType,AuthUserFile), - дополнительные настройки безопасности сервера и настраиваемые HTTP-заголовки ответов.
Чтобы .htaccess вступил в силу, параметр AllowOverride должен иметь значение, отличное от None, в родительском файле httpd.conf - на защищенных серверах обработка .htaccess часто полностью отключена.
Поскольку Apache считывает .htaccess при каждом HTTP-запросе к своему каталогу, это влечет за собой измеримые затраты производительности. Собственная документация Apache рекомендует вместо этого размещать эквивалентные директивы в блоках конфигурации сервера или VirtualHost, так как они загружаются только один раз при запуске.
.htaccess специфичен для Apache; Nginx не поддерживает его и требует эквивалентных правил в nginx.conf. Сопутствующий файл .htpasswd хранит хешированные учетные данные для базовой аутентификации HTTP.
Безопасность и защита
РИСК: HIGH.htaccess сам по себе является безвредным текстовым файлом для открытия в редакторе. Однако он представляет собой КРИТИЧЕСКУЮ поверхность атаки на веб-серверах: 1. Атака через загрузку: если веб-приложение позволяет пользователям загружать файлы в общедоступный каталог и AllowOverride в Apache разрешает .htaccess, злоумышленник, загрузивший специально подготовленный .htaccess, может повторно включить выполнение PHP в каталоге загрузки и запустить веб-шеллы. Меры защиты: храните загрузки вне корня документов; установите AllowOverride None для каталогов загрузки; блокируйте создание .htaccess в каталогах загрузки. 2. Раскрытие информации: неправильно настроенный сервер, который отдает .htaccess как текстовый файл (вместо блокировки доступа к скрытым файлам), раскрывает конфигурацию сервера, структуру каталогов и, возможно, ссылки на учетные данные. Стандартная конфигурация Apache блокирует доступ к файлам .htaccess (FilesMatch ^\.ht).
Детали формата
в двух словахПрограммы, открывающие файлы HTACCESS
Технические подробности
глубокая спецификация| Происхождение | Унаследовано от NCSA HTTPd (1994); Apache HTTP Server поддерживает его с версии 1.0 (1995) |
| Имя файла | Dotfile - полное имя файла `.htaccess`; скрыто по умолчанию в Unix и macOS |
| Тип файла | Текстовая конфигурация Apache для конкретного каталога |
| Кодировка | UTF-8 или ASCII (должна соответствовать локали сервера) |
| Типичный размер файла | 100 байт - 50 КБ (большинство файлов менее 5 КБ) |
| Частота обработки | Считывается Apache при каждом HTTP-запросе к содержащему его каталогу и всем подкаталогам |
| Предварительное условие | `AllowOverride` не должен иметь значение `None` в родительском `httpd.conf`; в противном случае `.htaccess` молча игнорируется |
| Общие директивы | `RewriteRule`, `RewriteCond`, `ErrorDocument`, `AuthType`, `AuthUserFile`, `Header`, `Options`, `Redirect` |
| Синтаксис контроля доступа | В Apache 2.4 директивы `Allow`/`Deny` заменены на `Require`; старый синтаксис требует `mod_access_compat` |
| Совместимость с Nginx | Не поддерживается Nginx; правила должны быть вручную переведены в директивы `nginx.conf` |
| Примечание о производительности | Вызывает чтение диска при каждом запросе; Apache рекомендует использовать `httpd.conf` или блоки VirtualHost для конфигурации |
| Риск безопасности | Загруженный злоумышленником `.htaccess` в доступный для записи веб-каталог может разрешить выполнение серверных сценариев |
| Выпущен | 1994 (NCSA HTTPd, predecessor to Apache; Apache inherited it from 1995) |
| Последняя версия | Apache HTTP Server 2.4.x directive syntax (current) |
| Открыть стандартное | Да · без роялти |
| Спецификация | httpd.apache.org |
Конвертации HTACCESS
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах HTACCESS.