- • Защита паролем
- • Модуль mod_rewrite - URL преобр.
- • Директива модуля - RewriteRule flags
- • Директива модуля - RewriteBase
- • Директива модуля - RewriteCond
- • Директива модуля - RewriteEngine
- • Директива модуля - RewriteOptions
- • Примеры URL преобразований
- • Боты - роботы через Mod rewrite
- • Защита от прямого скачивания
Auth - защита паролем
Еще можно использовать .htaccess для установки пароля на доступ к определенным страницам или разделам Вашего сайта (пароль htaccess).
Делается это путем создания в нужном подкаталоге файла .htaccess, в который пишем следующее (реальный пример):
# в кавычках пишем произвольное сообщение на английском,
#которое будет появляться в окошке авторизации
AuthName "The Catalogue on reconstructions, entry for debugging only. We Bring their own apologies an administration"
AuthType Basic
AuthUserFile /home/www/users/AM/pas/.htpasswd
require valid-user
Директива AuthName
Описание: значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации - название области ограниченного доступа (htaccess доступ)
Синтаксис: AuthName "The Catalogue on reconstructions, entry for debugging only. We Bring their own apologies an administration"
#все пишется в одну строкуДиректива AuthType
Описание: Эта директива выбирает тип аутентификации. Возможны следующие типы: Basic and Digest . Второй может не поддерживаться некоторыми браузерами, поэтому пользоваться им не рекомендуется.
Синтаксис: AuthType Basic | Digest
Директива AuthUserFile
Описание: значение AuthUserFile указывает имя файла с паролями для аутентификации пользователей.
Файл с паролями может быть создан утилитой htpasswd >>> скачать htpasswd для Windows - 202Кб.
Windows XP - определяет утилиту как опасную программу и выдает предупреждение, в windows 7 вопросов нет, как и в любой антивирусной программе. Так что запускайте смело. Сама утилита без-установочна и работает из любой папки.Путь к файлу с паролями задается относительно корня веб-сервера. Храните файл с паролями в папке, доступ к которой закрыт для пользователей - (желательно поместить этот файл вне иерархии вашего веб-сайта, но часто это не позволяют сделать настройки сервера хостинга).
Директива AuthName
Синтаксис: AuthUserFile путь-к-файлу
<?php
phpinfo () ;
?>
В переменной окружения DOCUMENT_ROOT Вы увидите ваш путь, приблизительно такого вида: DOCUMENT_ROOT => /home/www/users/AM/public_html
Директива Require
Описание: Определяет пользователей, которые могут получить доступ
Синтаксис: Require имя-пользователя| valid-user
Указывая valid - user вы разрешаете доступ всем пользователям, перечисленным в файле паролей.
Пример: разрешает доступ директории всем пользователям встречающимсмя в файле паролей .htpasswd. В зависимости от настроек хостинга может потребоваться секция директив Limit GET POST смотри в примерах ниже.
AuthName "Restricted area"
AuthType Basic
AuthUserFile /home/www/users/AM/pas/.htpasswd
Require valid-user
Пример: разрешает доступ к директории только 3-м пользователям:
AuthName "The Catalogue on reconstructions, entry for debugging only."
AuthType Basic
AuthUserFile /home/www/users/AM/pas/.htpasswd
Require Alexey Serpul Root
# в зависимости от версии иногда нужно добавить "*user*"
# Require *user* Alexey Serpul Root
ВАЖНОЕ ПРИМЕЧАНИЕ!!!
Стоит отметить, что разместить файл с паролями .htpassw в корне всех доменов в данном примере в директории "www", на некоторых хостингах не удалось - он был не доступен, на других такой вариант срабатывал. Вариант с одним .htpassw для нескольких каталогов - нескольких htaccess вполне работоспособен. Т.е. с одним файлом паролей лежащим в одном домене, могут работать все остальные домены вашего хостинга - сервера. Т.е один логин - пароль на все закрываемые Вами директории.
Что касается прав доступа то форма авторизации работает практически на всех вариантах, как на наиболее встречающихся дефолтных - 755, так и например на 544 т.е. владелец-5-(чтение-выполнить), группа-4-(чтение), публичные-4-(чтение).Рабочий пример: разрешает доступ к директории только 1-м пользователю (из практики скажим что для некоторых хостингов секция команд пропущенная в приведущих примерах "Limit GET POST" обязательна, поэтому эксперемнтируем):
AuthName "The Catalogue on reconstructions, entry for debugging only!"
AuthType Basic
AuthUserFile /home/www/htaccess.net.ru/secret/.htpasswd
<Limit GET POST>
require valid-user
<Limit>
Содержимое .htpasswd - сгенерированого и сохраненного утилитой passwd.exe - Encode UNIX Password. Копируем его соотвественно в - htaccess.net.ru/secret
Root:RoU9yc57nPeKM
В итоге при попытки открыть - войти в каталог в котором лежит данный .htaccess появляется окошко авторизации для ввода "Имя пользователя" - "Root" и "Пароля"- "12345".
Если введены неверные данные то сервер выдаст 401 код:
401 Unauthorized
Неавторизованный запрос. Этот код результата, передаваемый с заголовком WWW-Authenticate, показывает, что пославший запрос пользователь не имеет необходимых полномочий и что при повторении запроса с указанием данного URI пользователь должен такие полномочия предоставить.
Пример: ограничение доступа к определенным файлам (в этом примере ограничен доступ к zip архивам - htaccess запрет)
<FilesMatch "\.zip$">
AuthName "Only valid users can download zip files."
AuthType Basic
AuthUserFile /home/www/users/AM/pas/.htpasswd
Require valid-user
</ FilesMatch >
Пример: ограничение доступа к одному файлу (в этом примере ограничен доступ к конкретному файлу . htpasswd, но обычно о защите данного файла должен позаботиться хостер, в глобальной конфигурации сервера - при попытке открыть .htpasswd - сервер должен выдать 403 ошибку.
<Files ".htpasswd">
AuthName "Access restricted."
AuthType Basic
AuthUserFile /home/www/users/AM/pas/.htpasswd
Require Alexey Serpul
</ Files >
Следует помнить, что при таком ограничении доступа пароли передаются по каналам связи в открытом виде и при определенных обстоятельствах могут быть перехвачены злоумышленниками. Поэтому в целях безопасности рекомендуется организовывать доступ к закрытым областям веб-сайта через защищенное SSL -соединение.
