Добро пожаловать!
Здесь вы можете найти ответ на интересующий вас вопрос в отрасли сайтостроения, познакомится ближе с web технологиями и web стандартами.

Авторизация доступа средствами Web-сервера.

Для того, чтобы к файлам, находящимся в какой-либо директории, могли иметь доступ лишь определенные посетители, знающие два кодовых слова — логин и пароль, можно использовать встроенные в Web-сервер Apache средства ограничения доступа.

В конфигурационном файле Apache (он именуется httpd.conf, а просматривать и редактировать его могут только администраторы web-сервера) есть параметр AccessFileName. Там указано имя файла, найдя который той или иной папке, Apache выполнит по отношению к ней указания, содержащиеся в этом файле. По традиции это имя — .htaccess, и именно таким оно установлено на всех серверах хостинга. В файл .htaccess можно поместить команды ограничения доступа к той папке, в которой это файл находится.

Выглядят эти команды так. Вначале указывается название защищенной зоны — AuthName. Именно это название будет впоследствии выводиться в запросе посетителю (рис. 1).

AuthName "Введите пароль"
AuthType Basic
Рис. 1. Запрос на вход в папку.

В следующем параметре AuthUserFile — указывается путь к файлу с логинами и паролями посетителей. Этот файл должен быть создан в особом формате, так как пароли в нем хранятся в зашифрованном виде. Для создания файлов с паролями применяются специальная программа htpasswd.exe. Если у вас установлен сервер Apache, то такую программу вы найдете в папке C:/Program Files/Apache Group/Apache2/bin/.

Для работы с программой htpasswd.exe необходим интерфейс работы с командной строкой. Интерфейсом работы с командной строкой обладают файловые менеджеры типа Far, Total Commander и т.п. Можно использовать стандартную утилиту cmd (командная строка), которая входит в поставку Windows 2000/XP.

После запуска программы htpasswd.exe, вам предложат ввести пароль (рис. 2). Необходимо будет ввести пароль два раза, если вы ввели пароль правильно, программа завершает работу и в папке, где находился файл htpasswd.exe будет создан файл .htpasswd.

htpasswd.exe -c .htpasswd admin

Здесь .htpasswd — имя файла паролей, admin — имя пользователя (логин).

Рис. 2. Создание файла .htpasswd.

Чтобы добавить новые логины и пароли в уже имеющийся файл, эту программу следует запускать без параметра -c. По традиции файл с паролями посетителей принято называть .htpasswd. Обычно Apache настраивается так, что файлы с именами .htaccess и .htpasswd невозможно просмотреть через Web — при такой попытке будет выдаваться лишь сообщение о запрещении доступа. Однако выполнение такой настройки (для этого надо указать несколько параметров в httpd.conf) — целиком на совести администраторов web-сервера.

Не будем полагаться на совесть администраторов и разместим файл .htpasswd выше корня сайта. То есть, если файлы вашего сайта расположены, например, в /home/xxx/htdocs/, .htpasswd нужно поместить в /home/xxx/.

AuthUserFile /pub/home/xxx/.htpasswd
require valid-user

Замечание:

Если это невозможно, то файлы с паролями следует обязательно защитить. Это можно сделать с помощью файлов .htaccess. Чтобы защитить файлы с паролями создайте файл со строками:
<Files .htpasswd>
deny from all
</Files>
и положите его в ту директорию, где находится ваш файл с паролями. Теперь посетители сайта не смогут получить к нему доступ.

Обратите внимание, что путь к файлу паролей следует указывать абсолютный — то есть от корневого каталога сервера с указанием всего дерева каталогов. На серверах хостинга он обычно имеет вид /pub/home/имя_аккаунта/htdocs/admin/.htpasswd, а на вашем локальном компьютере зависит от местоположения web-сервера и его настроек, например, может выглядеть так: D:/work/localhost/www/admin/.htpasswd.

Замечание:

То, что требуется указывать именно абсолютный путь к файлу с паролями, не должно вас удивлять. Это сделано для того, чтобы можно было использовать один и тот же файл паролей для организации ограничения доступа сразу к нескольким папкам. В результате в том случае, если на сервер добавляется еще одна папка с защитой, то не требуется вновь раздавать зарегистрированным посетителям новые логины и пароли для доступа уже к ней — достаточно прописать путь к уже имеющемуся файлу с паролями в файле .htaccess, и все указанные в нем пароли автоматически станут действительными и для входа в новую папку.

Итак, пожелав "запаролить" доступ к ресурсам какой-либо папки, создайте файл с именем .htaccess с вышеуказанными параметрами (рис. 3).

Замечание:

Удобно создавать файлы .htaccess с помощью встроенного редактора в файловых менеджерах Far, TotalCommander и т.п., а также в редакторе Блокнот.

После этого загрузите оба файла на свой сайт: .htaccess в закрываемую папку, а файл с паролями — в соответствии с прописанным в .htaccess путем к нему.

Рис. 3. Создание файла .htaccess.

Вот и все. Теперь при попытке запроса любого ресурса из защищенной папки посетителю будет выдан стандартный запрос логина и пароля. Если логин и пароль совпадают с хранящимися в файле паролей (по умолчанию есть три попытки ввода), то доступ разрешается, если нет — средствами web-сервера выводится соответствующее сообщение (рис. 4).

Рис. 4. Сообщение сервера о запрете доступа.

Доступ открывается "для определенного окна браузера и всех его дочерних окон". Иными словами, если посетитель однажды ввел правильные логин и пароль, то он, работая в одном и том же окне браузера, может не только свободно путешествовать по всем ресурсам в запароленной папке, но и, выйдя из нее, свободно вновь в нее войти. То же самое верно и для всех окон браузера, открытых из исходного с помощью команды "открыть в новом окне". А вот если он откроет новое окно браузера и зайдет уже в нем в эту папку, то запрос на ввод логина и пароля появится вновь (разумеется, если страница не была взята из кэша браузера — в последнем случае достаточно ее обновить).