Эта инструкция расскажет как установить пароль на папку веб-сервера Apache в Windows
Что надёжнее: защита сервера паролем или с помощью контроля доступа
Если вы хотите закрыть свой веб-сервер от посторонних, кто рассмотрите вариант с блокировкой по IP. Например, если вы используете веб-сервер на локальном компьютере и в локальной сети, то вы можете разрешить доступ локальным IP, а для всех остальных заблокировать доступ к веб-серверу. Если вам такой вариант подходит, то смотрите статью «Контроль доступа к сайту (блокировка по IP, User-Agent)».
Но если вам необходим доступ к веб-серверу глобально, но вы хотите ограничить доступ посторонних ко всему серверу или отдельным папкам, то придётся выбрать защиту паролем.
Настройка HTTP Basic аутентификации на Apache в Windows
Данный способ настоятельно рекомендуется сочетать с HTTPS, в противном случае имя пользователя и пароль будут передаваться в открытом виде! Смотрите статью «Apache SSL: переход Apache на HTTPS».
Показанные ниже команды вы можете использовать без изменений если установили веб-сервер по следующей инструкции: «Как установить веб-сервер Apache c PHP, MySQL и phpMyAdmin на Windows». В противном случае вам нужно будет отредактировать пути до исполнимых файлов и файлов настроек.
Необходимо включить поддержку файла .htaccess, поскольку в нём будут храниться настройки по защите папки паролем. Если вы это ещё не сделали, то смотрите статью «Файл .htaccess в Apache».
Защищать паролем мы будем папку basic-protected, у меня эта папка расположена по пути C:\Server\data\htdocs\basic-protected — создаёте её и проверьте, что она доступна в веб-браузере http://localhost/basic-protected/.
Мы создадим файл C:\Server\bin\Apache24\conf\.htpasswd в котором будут храниться имена пользователей и хеши их паролей. Для этого мы воспользуемся утилитой htpasswd.exe
Синтаксис использования этой утилиты:
C:\Server\bin\Apache24\bin\htpasswd.exe -c -B C:\Server\bin\Apache24\conf\.htpasswd ИМЯ
Откройте командную строку (Win+x → Windows PowerShell) и выполните в ней эту команду, заменив ИМЯ на желаемое, например:
C:\Server\bin\Apache24\bin\htpasswd.exe -c -B C:\Server\bin\Apache24\conf\.htpasswd MiAl
Дважды введите пароль пользователя, этот пароль будет защищать папку от посторонних.
Если вы хотите добавить ещё пользователей и паролей, то используйте эту же самую команду, но без опции -c, то есть:
C:\Server\bin\Apache24\bin\htpasswd.exe -c -B C:\Server\bin\Apache24\conf\.htpasswd ДРУГОЕ_ИМЯ
Опция -c означает создать новый файл. Если файл уже существует, то он будет предварительно удалён.
Опция -B означает использовать для шифрования пароля bcrypt. В настоящее время это считается очень безопасным. В дополнении к этой опции вы можете использовать флаг -C со значением от 4 до 17. Он устанавливает время вычисления, используемое для алгоритма bcrypt (чем выше, тем безопаснее, но медленнее). Значением по умолчанию является 5.
Ещё пара опций, которые могут вам пригодиться с командой htpasswd.exe?
- -D означает удалить пользователя. Если имя пользователя существует в указанном файле htpasswd, оно будет удалено.
- -v означает проверить пароль. Убедитесь, что указанный пароль соответствует паролю пользователя, хранящемуся в указанном файле htpasswd.
Теперь в папке basic-protected создадим файл .htaccess со следующим содержимым:
AuthName "For registered members only" AuthType Basic Require valid-user AuthUserFile C:\Server\bin\Apache24\conf\.htpasswd
Вновь откроем адрес http://localhost/basic-protected/ и убедимся, что теперь для доступа к папке необходимо ввести имя пользователя и пароль:
Если имя или пароль неправильные, то будет выведена ошибка Unauthorized с запретом просмотра содержимого папки и файлов в ней.
Связанные статьи:
- Файл .htaccess в Apache (100%)
- Как в Windows поменять сообщения ошибок Apache (100%)
- Apache для Windows (53.4%)
- Как запустить Apache на Windows (53.4%)
- Документация по Apache на русском языке (53.4%)
- Ошибка «Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, openssl» (РЕШЕНО) (RANDOM - 50%)