Закрытая область веб-узла

Организация закрытой области с авторизованным доступом на веб-узле требует наличия ряда директив в блоке <Directory ...>...</Directory>, определяющем свойства нужной нам директории, или же в файле управления доступом .htaccess, расположенном в ней. Таким образом, закрыть паролем можно только целый каталог (со всеми подкаталогами, если таковые существуют), но не какой-то отдельный файл.
Рассмотрим управление авторизацией при помощи файла .htaccess. Этот файл необходимо расположить в той директории, к которой планируется ограничить доступ через Web. Его примерное содержимое должно быть таким:
AuthName "Private Zone"
AuthType Basic
AuthUserFile полный_путь_к_файлу_.htpasswd
require valid-user
Директива AuthName определяет имя закрытой области, которое выводится в диалоге авторизации в браузере.

При помощи директивы AuthType устанавливается тип авторизации, планирующийся к использованию в данном каталоге. В подавляющем большинстве случаев применяется метод Basic (основной).
Директива AuthUserFile определяет местонахождение файла, содержащего имена пользователей и пароли для доступа к закрытой области сайта. Обычно файл паролей называют именем .htpasswd, хотя это вовсе не обязательно. Обратите внимание, что параметр директивы AuthUserFile должен содержать полный путь к такому файлу.
(В целях обеспечения большей гибкости авторизации наряду с директивой AuthUserFile иногда применяется директива AuthGroupFile, позволяющая определять группы пользователей.)
Наконец, директива require указывает, какие авторизованные пользователи и группы могут иметь доступ к данному каталогу с заданными в AuthType методами. Параметр valid-user говорит о том, что доступ к закрытой области могут получить все пользователи, перечисленные в файле, определенном при помощи директивы AuthUserFile, предоставив правильный пароль. Помимо valid-user, могут быть использованы ключевые слова user или group с явным перечислением имен пользователей или групп, которым требуется разрешить доступ.
Из соображений безопасности в реальных условиях хостинга не рекомендуется размещать файл паролей (.htpasswd) в тех директориях, которые так или иначе доступны через Web — скажем, в пределах корневого каталога дерева документов или в каталоге, назначенном для CGI-скриптов.
Лучше всего, если это позволено администрацией хостинга, создать обособленную директорию (с названием auth, например) за пределами корневого каталога дерева документов сервера, и именно туда поместить файл паролей.
Типичный файл паролей имеет следующую структуру:
имя_пользователя_1:пароль_1
имя_пользователя_2:пароль_2
...
имя_пользователя_N:пароль_N
В простейшем случае пароли могут быть представлены в явном незашифрованном виде, но, как вы понимаете, это, мягко говоря, не слишком надежно. К тому же, вероятнее всего, в реальных условиях это и не будет работать.
Поэтому пароли требуется шифровать. Чаще всего для этого используется криптоалгоритм MD5, но возможны варианты. Так или иначе, зашифровка представляет собой необратимую операцию: восстановить исходный пароль по его зашифрованному виду невозможно. При проверке правильности пароля происходит зашифровка введенной пользователем символьной последовательности с использованием того же самого криптоалгоритма, после чего результат сравнивается с образцом, хранящимся в файле паролей. Иными словами, злоумышленник в любом случае вынужден будет пользоваться банальным перебором, даже в ситуации обладания файлом паролей, хотя наличие этого файла, конечно, в значительной мере упрощает дело, поскольку при особой необходимости процесс подбора в данном случае можно автоматизировать… Поэтому еще раз повторюсь: размещайте файл паролей вне пределов досягаемости!
Файл паролей проще всего подготовить при помощи утилиты htpasswd, которая входит в состав дистрибутива веб-сервера Apache (после установки размещается в директории bin).
Эта утилита работает в консольном режиме. Запустив htpasswd без параметров, можно получить справку о ключах, которые допустимо использовать в командной строке.
Чтобы создать файл паролей и добавить в него первого пользователя, нужно ввести следующую команду:
htpasswd -bcm .htpasswd имя_пользователя пароль
Если вы не хотите вводить пароль в командной строке, чтобы никто не подсмотрел его из-за спины, откажитесь от ключа b:
htpasswd -cm .htpasswd имя_пользователя
В этом случае htpasswd попросит ввести пароль в диалоговом режиме, маскируя вводимые символы «звездочками», и переспросит его еще раз в целях подтверждения.
Если файл паролей уже создан, и вам нужно добавить в него нового пользователя, из команды следует исключить ключ c:
htpasswd -bm .htpasswd имя_пользователя пароль
Ключ m определяет алгоритм шифрования — MD5. В Windows этот ключ используется по умолчанию, хотя если по каким-то причинам хочется использовать другой алгоритм, нужно применить другие ключи: d соответствует функции CRYPT, а s — алгоритму SHA.
Чтобы затруднить подбор, пароли следует выбирать достаточно длинными, не менее 8 знаков. Лучше всего, если в них будут случайно чередоваться прописные и строчные буквы с цифрами, к примеру, так: jkhsdYTQwP.


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.