авторизация с .htaccess

Discussion in 'PHP' started by alextoun, 14 Mar 2007.

  1. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    Для того, чтобы к файлам, находящимся в какой-либо директории, могли иметь доступ лишь определенные посетители, знающие два кодовых слова (логин и пароль), можно использовать встроенные в Web-сервер Apache средства ограничения доступа.
    В конфигурационных файлах Apache есть специальная строчка -AccessFileName. Там указано имя файла, найдя который в той или иной папке, Apache выполнит по отношению к ней указания, содержащиеся в этом файле. По традиции этим именем является .htaccess, и именно таким оно установлено на всех серверах хостинга. В файл .htaccess можно поместить команды ограничения доступа к той папке, в которой это файл находится.
    Выглядят эти команды так. Вначале указывается название защищенной зоны - AuthName. Именно это название будет впоследствии выводиться в запросе посетителю...

    В следующем параметре - AuthUserFile - указывается путь к файлу с логинами и паролями посетителей. Этот файл должен быть создан в особом формате, так как пароли в нем хранятся в зашифрованном виде. Для создания файлов с паролями применя-
    ются специальные программы - такую программу вы можете взять, например, в разделе технической поддержки компании Valuehost по адресу http://support.valuehost.ru/bbs/files/69-htpasswd.exe. Запускать ее следует из командной строки в формате 69-htpasswd.exe -с имя_файла_паролей логин, а в открывшемся окне ввести пароль (используя только латинские буквы). Чтобы добавить новые логины и пароли в уже имеющийся файл, эту программу следует запускать без параметра -с.
    По традиции файл с паролями посетителей принято называть .htpasswd. Обычно Apache настраивается так, что файлы с именами .htaccess и .htpasswd невозможно просмотреть через Web - при такой попытке будет выдаваться лишь сообщение о запрещении доступа. Однако выполнение такой настройки (для этого надо указать несколько параметров в httpd.conf - конфигурационном файле Apache) - целиком на совести администраторов web-сервера.
    Обратите внимание, что путь к файлу паролей следует указывать абсолютный - т. е. от корневого каталога сервера с указанием всего дерева каталогов. На серверах хостинга он обычно имеет вид /pub/home/имя аккаунта/..../имя файла паролей, а на вашем локальном компьютере зависит от местоположения web-сервера и его настроек, например, может выглядеть и как f:/www/exper/cov/.htpasswd.

    Создав файл .htaccess, загрузите программу для создания файла паролей и поработайте с нею. После этого загрузите оба файла на свой сайт: .htaccess - в закрываемую папку, а файл с паролями - в соответствии с прописанным в .htaccess путем к нему.
    Вот и все! Теперь при попытке запроса любого ресурса из защищенной папки (в том числе и картинок, включенных в другие страницы тэгом < img...>) посетителю будет выдан стандартный запрос логина и пароля. Если логин и пароль совпадают с хранящимися в файле паролей (по умолчанию есть три попытки ввода), то доступ разрешается, если нет - средствами web-сервера выводится соответствующее сообщение:"Анонимныйвход на этот FTP-сервер невозможен"

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

    Для некоторых конечно не новость, но многим понадобиться.
     
    2 people like this.
  2. GoNZo

    GoNZo New Member

    Joined:
    17 Nov 2006
    Messages:
    13
    Likes Received:
    4
    Reputations:
    -1
    cd /public_html
    mkdir admin
    chmod g+r,g+x,o-r,o-x admin
    chgrp-www -sd admin
    cd admin

    Дальше прписываем в .htaccess
    AuthUserFile /полный/путь/до/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Adminka"
    AuthType Basic

    <Limit GET>
    require valid-user
    </Limit>

    Дальше создаем .htpasswd у туда пишем
    user;password
     
    3 people like this.
  3. Woldemar

    Woldemar Member

    Joined:
    9 Jun 2005
    Messages:
    33
    Likes Received:
    5
    Reputations:
    3
    тут на сайте пытаюсь залезть.
    вытянул .htpasswd
    admin:xQ0dkNfNQVM3Q
    Но почему то когда лезу туда аутентификация не проходит почему?
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Мда......идем в раздел "Статьи" и видим прекрасные статьи от Бра...
    Зачем баянить?
     
  5. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    Woldemar, xQ0dkNfNQVM3Q - это не пароль, а его хеш в DES...
     
  6. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    дык ведь в никсах есть тулза htpasswd для создания этого файла.. чтобы не мучаться с прописыванием всего =)

    htpasswd -c /home/xek/public_html/.htpasswd xek - cоздает

    htpasswd -mb /usr/web/.htpasswd-all xek pass - добавляет

    htpasswd /usr/local/etc/apache/.htpasswd-users xek - добавляет, или если есть изменяет пасс

    флаги

    htpasswd -c [ -m | -d | -p | -s ] passwdfile username password

    -c создание
    -m - крипт в unix(md5) ..
    -d - крипт никсовской crypt()
    -s - крипт sha
    -p -плеинтекст пасы
    passwdfile - где хранится пасс.. хтпассвд тобишь
    username и password думаю обьяснять не надо )
     
    1 person likes this.
  7. AlexandrK

    AlexandrK New Member

    Joined:
    4 Jan 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0