l

Пароль к веб-странице

12.03.2009 23083 Пишу Ваш комментарий компьютерный практикум

Часто, пытаясь войти на какую-то веб-страницу, видим окошко для ввода логина и пароля. Удобное средство, чтобы ограничить доступ в те места сайта, которые «не для всех». Так, например, защищают страницы для администрирования сайта или разграничивают доступ к базам данных через интернет, да много ещё чего. Но это все лирическое отступление…

Речь же пойдет о том, как все это сделать на своем сайте. Сразу скажу, что речь пойдет о настройке веб-сервера Apache для Windows и FreeBSD. Возможно для Linux или какой-то другой операционной системы, или другого веб-сервера настройки могут быть иными. Во всяком случае, прочитав эту статью, вы всегда можете обратиться к документации самого веб-сервера Apache для конкретной ОС. А если вы используете другой веб-сервер, потрудитесь прочитать докуменнтацию к нему.

Различия настроек Apache для Windows и FreeBSD лежат в основном в месте расположения конфигурационных файлов и способа прописывания путей к папкам.

Почему к папкам? Просто механизм сделан так, что паролем защищается целая папка (каталог) с файлами. Все веб-страницы, попавшие в такую защищенную папку будут требовать ввода логина и пароля. В случае, когда различия в настройках для Windows и FreeBSD есть, я буду приводить два варианта настроек.

Основной конфигурационный файл апача, уж позвольте так по-простому называть веб-сервер Apache, называется httpd.conf. Хотя в подобных случаях документация к апачу рекомендует переделывать файл access.conf, где вроде и должны описываться условия доступа к папкам, я редактирую именно httpd.conf. Как поступите вы — дело, конечно, ваше. Чтобы позже было легче найти свои правки в настройках, я обычно их дописываю в конец файла. Это имеет и еще один смысл. Если, например, вставить свою запись про доступ к папке вверху конфигурационного файла, я не поручусь, что где-то ниже нет других настроек доступа к той же папке. А вот запись в самом конце файла обрабатывается последней.

Итак, в конце файла httpd.conf появляется вставка вида:

Для Windows:

<Directory c:/www/HTDOCS/admin>
    AllowOverride AuthConfig
</Directory>

Для FreeBSD:

<Directory /usr/local/www/admin>
    AllowOverride AuthConfig
</Directory>

Конечно оба пути вымышленные, но они показывают, что путь к папке admin указан абсолютный, так и должно быть. Главное, чтобы указанная папка была в принципе доступна через интернет. Дальнейшие танцы с там-тамом нужно вести уже в самой защищаемой папке, в нашем примере admin.

В ней необходимо создать файл с названием .htaccess, именно с точкой в начале. Windows неохотно создает подобные файлы, считая точку началом расширения (типа) файла. Воспользуйтесь в этом случае, например Far’ом. Уж он-то создаст файл с таким именем. Содержимое этого файла может быть таким:

Для Windows:

AuthType        Basic
AuthName        users
AuthGroupFile   c:/www/HTDOCS/admin/.grp
AuthUserFile    c:/www/HTDOCS/admin/.pwd
<Limit GET POST>
    require group test
</Limit>

Для FreeBSD:

AuthType        Basic
AuthName        users
AuthGroupFile   /usr/local/www/admin/.grp
AuthUserFile    /usr/local/www/admin/.pwd
<Limit GET POST>
    require group test
</Limit>

Здесь остановимся подробнее. Настроек в этом файле могло бы быть и больше. Кроме того, варианты для Windows и FreeBSD снова отличаются лишь путями к файлам. Пути эти снова абсолютные. Но обо всем по-порядку:

Переменной AuthType присвоено значение Basic. Этого достаточно, чтобы система выдавала запрос на ввод логина и пароля. Ей можно было бы присвоить и другие значения, но на них я здесь останавливаться не буду. Вы можете о них прочитать все в той же документации к апачу.

Переменной AuthName присвоено значение users, это значение «было взято с потолка». В окошке с логином и паролем оно появляется над полями для ввода, как это показано на рисунке ниже, то есть это значение можете придумать сами.

Окно с запросом пароля для доступа к веб-странице

Переменные AuthGroupFile и AuthUserFile содержат пути к файлу групп (на самом деле в нем указаны еще и имена (логины) пользователей, которые и будут иметь доступ к защищенным страницам) и файлу с паролями для этих пользователей. Вообще говоря, эти файлы вовсе не обязаны храниться в самой защищаемой папке, было бы даже лучше сохранить их где-то в другом месте, но путь к этим файлам (ещё раз повторюсь) должен быть абсолютным. О содержимом этих файлов поговорим чуть позже, а пока закончим с файлом .htaccess. Последние три строчки, содержащие:

<Limit GET POST>
    require group test
</Limit>

объясняют серверу, что обрабатывать нужно запросы двух типов GET и POST, но останавливаться на этом подробно я не буду. Строка require group test поясняет апачу, что пользователи, которым открыт доступ к защищаемым страницам входят в группу test. Это название может быть любым, но оно должно совпадать с названием группы пользователей в файле групп. Кроме того, это название группы никак не связано с группами пользователей, имеющимися в Windows или FreeBSD, это выдуманная группа.

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

test: peTya Kolya "Vasya Pupkin"

Здесь в придуманной группе test записаны три логина (именно их и надо вводить при запросе имени и пароля). Как ясно из приведенного примера, логин может состоять больше чем из одного слова, но тогда его необходимо обособить двойными кавычками.

Файл паролей, в нашем примере .pwd содержит те же самые имена (логины) и зашифрованные пароли к ним разделенные двоеточием. Спокойно, я не буду вас просить самих заниматься шифрованием паролей. Для этого у апача и под Windows, и под FreeBSD имеется специальная программка, она называется htpasswd и находится в обоих случаях в папке bin. Ей и нужно воспользоваться для редактирования файла паролей.

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

htpasswd -c .pwd peTya

Программа htpasswd создаст файл .pwd там же где находится сама и вам его прийдется затем перенести в указанное выше место. Затем будет дважды запрошен пароль для пользователя peTya. В следующий раз ключ -c уже не нужен, иначе программа пересоздаст файл с паролями и сотрет всю имеющуюся в нем на тот момент информацию. Второй вызов команды может выглядеть так:

htpasswd .pwd "Vasya Pupkin"

Ничего нового, программа дважды запросит пароль для пользователя с логином Vasya Pupkin. Логины нет необходимости вводить в том же порядке, что и в файле групп.

Вот, кажется, и всё. Необходимо лишь тщательно проверить все пути к файлам, и аккуратно ввести пароли, так как храниться они будут в зашифрованном виде. По интернету они тоже будут передаваться шифрованными. Этот способ элегантен и надежен. Не забудьте перезапустить ваш веб-сервер.

Оставьте ваш отзыв: