Как создать htpasswd в windows

Обновлено: 30.06.2024

Бывают случаи, когда нужно ограничить доступ пользователей к определенной папке на сайте (разделу сайта) и пускать туда посетителей только по паролю. Например, в раздел администратора. В этой статье я приведу инструкцию когда в качестве веб-сервера вы используете Apache.

Как настроить доступ по паролю

Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли. Во-вторых, необходимо указать веб-серверу, что доступ к этому разделу сайта (папка, директория) возможен только авторизованным пользователям.

Параметры файла .htaccess

Настройка доступа к папке по паролю в веб-сервере Apache производится в служебном файле .htaccess. Этот файл должен находиться в той папке для которой мы настраиваем ограничения. Иными словами, инструкции из файла .htaccess распространяются на ту папку, в которой этот файл расположен.

Чтобы доступ к необходимой нам папке был ограничен необходимо добавить в файл .htaccess следующие строки (если такого файла нет, то создайте его):

Файл .htpasswd нужно размещать вне папок сайта, чтобы к нему не было доступа из интернета.

Формат файла .htpasswd

Файл состоит из строк, в каждой из которых содержатся пары логин и хеш пароля. Логин отделяется от хеша двоеточием. Пример содержимого файла:

Как создать файл .htpasswd

Так как файл .htpasswd не содержит пароль в открытом виде, а лишь его хеш, то внести изменения в этот файл вручную с помощью обычного текстового редактора не получится. Нужно использовать специальную утилиту. В линукс системах для работы с файлом паролей используется утилита htpasswd, входящая в состав дистрибутива веб-сервера Apache. Я писал о ее использовании в этой статье.

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

Если файла .htpasswd уже существует, то исключите ключ -c:

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

С помощью этой утилиты, так же можно изменить уже присвоенный пользователю пароль, то есть изменить пароль для существующего пользователя.

Проверка работы .htpasswd

Если вы все сделали правильно, то при посещении запароленной папки (раздела на сайте), вы должны увидеть примерно следующее уведомление:

Как поставить пароль на раздел (директорию, папку) сайта

Бывают случаи, когда нужно ограничить доступ пользователей, к определенному каталогу на сайте или разделу сайта, и пускать туда посетителей только по паролю. Например, в раздел администратора. В этой статье я приведу инструкцию когда в качестве web-сервера вы используете Apache.

2. Как настроить доступ по паролю.

Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли. Во-вторых, необходимо указать web-серверу, что доступ к этому разделу сайта возможен только авторизованным пользователям.

3. Параметры файла .htaccess.

Настройка доступа к каталогу по паролю в web-сервере Apache производится в служебном файле .htaccess. Иными словами, инструкции из файла .htaccess распространяются на тот каталог, в котором этот файл расположен.

Добавляемый фрагмент в файл конфигурации:

  • AuthName — это приветствие, которое увидят посетители, вы можете изменить его на свое,
  • AuthUserFile — полный путь к файлу паролей от корня диска, у вас должен быть свой (не путать с адресом запароленного каталога).

Файл .htpasswd нужно размещать вне каталогов сайта, чтобы к нему не было доступа из интернета.

После модификации файла конфигурации перезапустите Apache:

4. Формат файла .htpasswd.

Файл состоит из строк, в каждой из которых содержатся пары логин и хеш пароля. Логин отделяется от хеша двоеточием.

Пример содержимого файла:

5. Как создать файл .htpasswd.

Так как файл .htpasswd не содержит пароль в открытом виде, а лишь его хеш, то внести изменения в этот файл вручную с помощью обычного текстового редактора не получится. Нужно использовать специальную утилиту. В Linux системах для работы с файлом паролей используется утилита htpasswd, входящая в состав дистрибутива web-сервера Apache.

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

Если файла .htpasswd уже существует, то исключите ключ -c:

.htpasswd — это полный путь от корня диска к файлу с паролями, а NewUser — имя пользователя.

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

С помощью этой утилиты, так же можно изменить уже присвоенный пользователю пароль, то есть изменить пароль для существующего пользователя.

После создания файла .htpasswd с паролями накидываем права на этот файл:

6. Проверка работы .htpasswd.

Если вы все сделали правильно, то при посещении запароленного каталога (раздела на сайте), вы должны увидеть примерно следующее уведомление:


http authentification

Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строится средствами сервера Apache.

Настройка защиты с помощью htaccess и htpasswd

Для работы нам необходимо несколько вещей:

  • Доступ к сайту по FTP;
  • Наличие прав на редактирование .htaccess ;

Для начала нам необходимо создать файл .htaccess. Проще всего это сделать с помощью обычного блокнота Windows. Нажимаем на рабочем столе правой кнопкой мыши, затем Создать — Текстовый документ. Открываем созданный текстовый документ, затем Файл — Сохранить как. Название меняем на .htaccess (точка перед названием обязательна!), тип файла «Все файлы» (иначе создастся .htaccess.txt).

Запускаем командную строку Пуск — Выполнить — cmd. Пишем cd C:/ , затем нажимаем Enter.

Теперь пишем следующую команду: htpasswd -cm .htpasswd admin

  • htpasswd — наша скаченная программа
  • -cm .htpasswd — параметр для создания файла .htpasswd и шифрования пароля с помощью MD5
  • admin — имя пользователя, для которого создаем пароль

После выполнения команды необходимо ввести и подтвердить пароль для пользователя.

У нас создался файл .htpasswd с логином и паролем, с помощью которых можно будет получить доступ к сайту/директориям.

Теперь нам необходимо загрузить наши файлы .htaccess и .htpasswd на сервер.

.htaccess загружаем в директорию, которую необходимо защитить (будут автоматически защищены все подпапки), а .htpasswd рекомендуется загружать в другую директорию.

После того, как вы загрузили файлы на сервер по FTP, необходимо отредактировать файл .htaccess. Можно сделать это прямо на сервере, либо на компьютере через блокнот и потом снова загрузить на сервер. Пишем в файл следующие строки:

Для этого создаем файл, например, info.php. Пишем в него следующий код:

Копируем все, кроме названия файла и вставляем в .htaccess. После обязательно удалите info.php с сервера!

Все, сохраняем файл .htaccess и загружаем на сервер (если редактировали на локальном компьютере).

Теперь, если попробовать зайти в папку на сервере, то будет выскакивать окошко с запросом логина и пароля. Сессия хранится до закрытия браузера.

У сервера apache есть возможность сделать базовую авторизацию. Чтобы закрыть директорию, в неё нужно поместить два файла – .htaccess и .htpasswd.

Содержание файла .htaccess

AuthUserFile /путь_до_директории/.htpasswd – путь до файла с паролями.

Чтобы узнать полный путь к директории достачно поместить в неё PHP файл и запустить его в браузере.

Авторизацией можно закрыть только определенные файлы, например архивы ZIP.

На некоторых хостингах авторизация на статические файлы (изображения, шрифты и т.д.) может не работать т.к. они отдаются через Nginx.

Стоит проверить прямой доступ к самим файлам .htaccess и .htpasswd из браузера, если да, то закрыть его:

Пароли в htpasswd

В файле хранится пары логина и хеша пароля, например:

Логин может содержать латинские буквы, цифры, - и _ , регистрозависимый.

Хеш можно сгенерировать в PHP, возможны следующие алгоритмы:

Bcrypt

В настоящее время считается очень безопасным, работает начиная с версии 2.4, формат:

$2y$ или $2a$ + результат алгоритма crypt_blowfish.

MD5 (APR)

Специфический алгоритм Apache (1000 итераций MD5 случайной соли и пароля), работает во всех версиях.

$apr1$ + результат алгоритма.

Работает только на Unix хостингах и до версии Apache 2.2.17. Ограничивает длину пароля до 8 символов. Считается небезопасным.

Этот алгоритм небезопасен по современным стандартам, работает во всех версиях.

+ результат SHA-1 (бинарная строка из 20-ти символов) закодированный в Base64.

Генератор htpasswd

Введите логин и пароль:

Авторизация и выход

Реквизиты доступа к закрытой директории можно передать в URL:

Если такие URL использовать в src изображений, скриптов и стилей, то работать они не будут, вызвав ошибку:

Завершение сеанса происходит по закрытию браузера, но не вкладки. Другого варианта не предусмотрено.

Взаимодействие с PHP

В PHP можно отследить авторизированного пользователя по переменным массива $_SERVER .

Если их нет, значит пользователь не авторизирован. Вывести диалог входа из PHP:

Читайте также: