Простое ограничение доступа по паролю

Скачать Viber 27.05.2019
Скачать Viber

Укажите данные для создания.htpasswd и.htaccess файлов:

Логин:
Пароль:
Полный путь к файлу.htpasswd

Приветствие(заголовок):

Формат ХЕШ-пароля: MD5 crypt SHA


Данный пароль сгенерирован при помощи htpasswd и подходит для Linux и Windows
Скопируйте эту строку в ваш .htpasswd файл:

Admin:SbMAWhf7pD0aYЭж Помните, только одна запись может быть в строке!

Для ограничения доступа к выбранной директории скопируйте эти строчки в ваш .htaccess файл:

AuthType Basic AuthName "Thats protected Area!" AuthUserFile /usr/host/mysite/.htpasswd Require valid-user

Для запрета доступа только к файлу private.zip скопируйте эти строчки в ваш .htaccess файл:

AuthType Basic AuthName "Thats protected Area!" AuthUserFile /usr/host/mysite/.htpasswd Require valid-user deny from all #запрет доступа из браузера к.htpasswd

Обратите внимание что файлы.htaccess и.htpasswd должны быть сохранены в unix-формате. Например, в Far Manager этого можно достичь если в режиме редактирования файла нажать комбинацию Shift+F2 и в появившемся меню выбрать “в формате UNIX (LF)”.

Директивы и описание файла.htaccess, используемые для ограничения доступа

  • AuthType - Тип используемой аутентификации. Для базовой аутентификации эта директива должна иметь значение: Basic
  • AuthName - Имя области действия аутентификации. Текст, помогающий посетителю понять, куда он пытается получить доступ. Например, может быть написано: "Private zone. Only for administrator!"
  • AuthUserFile - полный путь к файлу с паролями (.htpasswd). Относительные пути работать не будут.
  • AuthGroupFile - путь к файлу групп, если он существует.
  • Require - Одно или несколько требований, которые должны быть выполнены для получения доступа к закрытой области.
    • require valid-user - разрешен доступ всем прошедшим проверку
    • require user admin alex mango - разрешен доступ только посетителям с именами admin, alex, mango. Естественно, они должны пройти аутентификацию.
    • require group admins - разрешен доступ всем пользователям из группы admins

Файлы групп

Если к защищаемой области сайта должна иметь доступ группа людей, то удобно объединить людей в группы, и разрешать доступ, определяя принадлежность пользователей к группе.

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

Пример файла групп:

Admins: admin alex mango Users: guest user max23

В группу Admins входят посетители с именами admin, alex, mango. А группу Users входят посетители с именами guest, user, max23.

Пример файла.htaccess для доступа всем пользователям, прошедшим авторизацию:

AuthType Basic AuthName "Private zone. Only for administrator!" AuthUserFile /usr/host/mysite/.htpasswd require valid-user

Пример файла.htaccess для доступа только пользователям admin и root:

AuthType Basic AuthName "Private zone. Only for administrator!" AuthUserFile /usr/host/mysite/.htpasswd require user admin root

Доступ только пользователей из группы admins:

AuthType Basic AuthName "Private zone. Only for administrator!" AuthUserFile /usr/host/mysite/.htpasswd AuthGroupFile /usr/host/mysite/group require group admins

C остальными директивами и возможностями файла.htaccess Вы можете ознакомиться в статье .htaccess


.

Не редко на сайтах можно встретить аутентификацию, реализованную с помощью конфигурационного файла .htaccess . Простота настроек и надежность, основные преимущества данного вида авторизации.

Директивы файла. htaccess.

AuthName "Текст выводится в окне авторизации" AuthType Basic AuthUserFile Полный путь/.htpasswd require valid-user

AuthName - текст содержащийся в данной директиве, выводится в окне ввода пароля. Он должен быть написан в одну строку и заключен в двойные кавычки.

AuthType - типы аутентификации: Basic или Digest . Рекомендуется использовать первый, т.к. второй поддерживается не всеми браузерами.

AuthUserFile - полный путь к файлу с логинами и паролями, для аутентификации пользователей. Пароли содержаться в шифрованном виде. Рекомендуется хранить данный файл в папке, к которой нет доступа для пользователей, это необходимо, чтобы предотвратить кражу паролей.

require valid-user - директива предписывает, что к URL получают доступ только, пользователи, успешно прошедшие аутентификацию.

Где можно реализовать?

Авторизацию можно прикрутить к любой директории вашего сайта, будь то корень, либо папка из иерархии. Очень часто можно встретить защиту с помощью .htaccess , для входя в “Панель управления” сайтом. Также с помощью этой технологии можно ограничить доступ к папкам, где лежат конфиденциальные данные.

Итак, давайте создадим директорию с названием CMS (можете выбрать любое название). В ней будут находиться: файл конфигурации.htaccess и файл с паролями.htpasswd ., а также все остальные файлы и папки, к которым вы хотите сделать ограниченный доступ.

Настройка файла.htaccess

Создайте с помощью обычного блокнота файл .htaccess (точка перед названием обязательна), в папке CMS, заполните его директивами указанными выше. Для заполнения директивы AuthUserFile необходимо указать полный путь к файлу с паролями .htpasswd , который находится в этой же папке.

Как узнать полный путь к файлу?

Полный путь к файлу, можно узнать с помощью функции phpinfo() . Результатом ее выполнения будет подробная таблица настроек веб-сервера.

Создайте файл info.php, с содержимым , в директории CMS. Запустите файл через браузер. В полученной таблице, найдите переменную SCRIPT_FILENAME , которая содержит полный путь к файлу .

После получения нужных данных, обязательно удалите файл info.php, чтобы информация о настройках веб-сервера не стала общедоступной.

Рис 1. Полный путь к файлу. Результат выполнения функции phpinfo()

Скопируйте полученный путь, замените в нем имя файла, info.php на .htpasswd , и поместите его в директиву AuthUserFile .

AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd

Таким образом, готовый файл.htaccess , будет содержать следующие директивы:

AuthName "Authentication" AuthType Basic AuthUserFile Z:/home/localhost/www/scripts/CMS/.htpasswd require valid-user

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

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

. Создать новый файл с паролями , назначить ему имя.htpasswd, задать шифрование паролей по алгоритму MD5 и добавить в него логин admin:

Htpasswd -cm .htpasswd admin

-cm - ключи утилиты:

- указывает, что необходимо создать новый файл

-m -шифрует пароли по алгоритму MD5

.htpasswd - имя файла с паролями

admin - логин

Рис. 2. Создание нового файла с паролями, утилитой htpasswd.exe

. Добавить в уже существующий файл с паролями нового пользователя . Для этого нужно в команде указать один ключ -m, ключ -c, опустить.

Htpasswd -m .htpasswd user

Рис. 3. Добавление в уже существующий файл с паролями нового пользователя, утилитой htpasswd.exe.

. Чтобы изменить пароль для существующего пользователя, используйте ту же команду, что и при добавлении.

Htpasswd -m .htpasswd user

Рис 4. Изменение пароля для существующего пользователя, с помощью утилиты htpasswd.exe.

После создания файла с паролями, поместите его в директорию, путь к которой указан в директиве AuthUserFile файла.htaccess. (в нашем случае в папку CMS)

Доступ к данным авторизации, через переменные массива $_SERVER

После успешного прохождения аутентификации, логин и пароль, вбитые пользователем, помещаются в суперглобальный массив$_SERVER, который можно обрабатывать с помощью php скрипта.

  • $_SERVER["PHP_AUTH_USER"] - логин;
  • $_SERVER["PHP_AUTH_PW"] - пароль;

Результат

Теперь если вы перейдете в браузере в папку, где лежит конфигурационный файл.htaccess, вы получите всплывающее окно, где нужно вбить логин и пароль. При успешной авторизации доступ к папке будет открыт.

Рис. 5. Окно аутентификации.

Подведем итоги:

  • С помощью конфигурационного файла .htaccess , можно ограничить доступ к любой директории вашего сайта;
  • Чтобы создать файл .htaccess воспользуйтесь обычным блокнотом;
  • Чтобы указать полный путь к файлу с паролями .htpasswd , в директиве AuthUserFile файла .htaccess , воспользуйтесь функцией phpinfo();
  • Для создания файла с паролями.htpasswd , воспользуйтесь утилитой htpasswd.exe ;
  • Размещайте файл с паролями .htpasswd , в папке, к которой нет доступа для пользователей , чтобы предотвратить кражу паролей;
  • Доступ к данным авторизации осуществляется через переменные суперглобального массива $_SERVER : $_SERVER["PHP_AUTH_USER"] , $_SERVER["PHP_AUTH_PW"];

Защита сайта средствами самого сервера Apache является одним из самых простых и в тоже время достаточно надежных способов. В этом случае Вам не нужно досконально продумывать стратегию безопасности, осуществлять ее проектирование и реализацию в коде. К тому же, для того, чтобы создать хорошую систему защиты нужно обладать достаточной квалификацией в этом вопросе. Используя встроенную защиту WEB-сервера Apache, Вы значительно упрощаете себе задачу - все, что Вы должны сделать - это выполнить несложную последовательность действий и Ваш сайт будет в достаточной мере защищен. В данной статье будут подробно описаны шаги и действия, которые Вам необходимо совершить. А в конце статьи будут приведены примеры файлов.htaccess .

Базовая аутентификация

В данной статье будет рассмотрен самый простой и доступный способ защиты - базовая аутентификация.

Замечание

Аутентификация - процесс, с помощью которого проверяется, что некто является именно тем, за кого он себя выдает. Как правило, проверка включает в себя ввод имени и пароля.

Рассмотрим, как работает базовая аутентификация.
При обращении посетителя в защищаемую директорию, сервер Apache в ответ на запрос посылает заголовок с кодом 401 (401 authentication required header). Браузер посетителя принимает заголовок с кодом 401 и выводит окно с полями для ввода имени пользователя и пароля. После ввода имени и пароля эти данные отсылаются назад серверу, который проверяет имя пользователя на предмет нахождения в специальном списке, а пароль на правильность. Если все верно, то посетитель получает доступ к ресурсу. Вместе с заголовком браузеру посылается специальной имя, называемое областью действия. Браузер кэширует не только имя и пароль, чтобы передавать их при каждом запросе, но и область действия. Благодаря этому, ввод имени и пароля в защищаемой директории осуществляется только раз. В противном случае их необходимо было бы вводить при каждом запросе к защищаемой директории. Кэширование параметров аутентификации (имя, пароль, область действия), обычно осуществляет только в пределах одного сеанса.

Замечание

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

Замечание

WEB-сервер Apache поддерживает еще один вид защиты - digest-аутентификацию. При digest-аутентификации пароль передается не в открытом виде, а в виде хеш-кода, вычисленному по алгоритму MD5. Поэтому пароль не может быть перехвачен при сканировании трафика. Но, к сожалению, для использования digest-аутентификации необходимо установить на сервер специальный модуль - mod_auth_digest. А это находится только в компетенции администрации сервера. Также, до недавнего времени, digest-аутентификация поддерживалась не всеми видами браузеров.

Защита сайта - это просто

Для того чтобы защитить сайт, нужно выполнить следующую последовательность действий: создать файл с паролями, переписать его на сервер, создать файл.htaccess и тоже переписать его на сервер.
Для организации защиты понадобится.

  1. WEB-сайт и FTP-доступ к нему.
  2. Права на создание файлов.htpaccess и организацию защиты с помощью них.
  3. Утилита генерации паролей htpasswd.exe

Проверка работы файла.htaccess на сервере

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

Замечание

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

Замечание

Чтобы блокнот не подставлял автоматически расширение txt, в диалоге сохранения в выпадающем списке "тип файла" следует выбрать опцию "Все файлы".


Рис. Сохранение файлов.htaccess в блокноте

Проверка работы.htaccess

AuthType Basic
AuthName admin
require valid-user

Затем, через FTP-доступ, перепишите файл.htaccess на сайт, в ту директорию, которую вы хотите защитить.

Замечание

Действие файлов.htaccess распространяется не только на ту директорию, где лежит файл, но и на все поддиректрии, лежащие уровнем ниже.

Далее через браузер обратитесь к этой директории. Если Вы защищаете директорию admin и переписали туда файл.htaccess, то для проверки Вам следует вписать в адресную строку браузера следующий URL: http://www.mysite.ru/admin/.

Если после этого Вам открылся запрос на ввод логина и пароля, как на рисунке ниже, то тестирование прошло успешно и можно продолжать защиту директории.

Рис. Окно ввода логина и пароля


Если вы все сделали правильно, но окошко ввода пароля не появилось, то это значит, что настройки сервера запрещают Вам использовать файлы.htaccess для защиты директорий. Для решения данного вопроса Вам следует связаться с администрацией сервера, либо использовать другой тип защиты.
После того, как было выяснено, что файлы.htaccess работают, следует удалить с сайта только что написанный тестовый файл.

Замечание

Если по каким либо причинам Вы не можете удалить файл.htaccess, то создайте пустой файл.htaccess и замените им файл, лежащий на сервере.

Создание файла с паролями.htpasswd

Файл с паролями создается утилитой htpasswd.exe . Если у Вас на машине установлен WEB-сервер Apache, то данная утилита находится в директории с установленным Apache -ем в подкаталоге bin .

Замечание

Если у Вас не установлен Apache, то утилиту htpasswd.exe можете скачать по ссылке: .

Для работы с утилитой htpasswd.exe необходим интерфейс работы с командной строкой. Интерфейсом работы с командной строкой обладают такие программы как Far, WindowsCommander и т.п. Здесь будет рассмотрена работа с командной строкой с помощью утилиты cmd, которая входит в поставку Windows 2000/XP и т.п.
Нажмите "Пуск"->"Выполнить" , введите в строку ввода cmd и нажмите ОК . Вам откроется окно утилиты CMD.

Рис. Окно утилиты CMD


Далее необходимо перейти в директорию, где находится утилита htpasswd.exe . Допустим, сервер Apache установлен в директории с:/Apache2, тогда введите в командную строку команду: cd../../apache2/bin и нажмите ввод.


Вы перешли в директорию с:Apache2in. Теперь нужно дать команду на создание файла с паролем. Введите в командную строку следующее:

Htpasswd -cm .htpasswd admin

  • -cm - это ключи для утилиты. Ключ с - указывает, что необходимо создать новый файл с паролями. Если файл с таким именем уже существует, то он будет перезаписан. Ключ m - определяет шифрование по алгоритму MD5.
    .htpasswd - имя файла с паролями (можете использовать любое имя).
    admin - имя посетителя, которому будет разрешен доступ в закрытую область сайта.

В ответ, должен появится запрос на ввод пароля и его повтор. Если все правильно, то в завершении появится сообщение: Adding password for user admin. И в директории c:Apache2in появится файл.htpasswd, к котором будет находиться строка с именем пользователя и хеш-кодом его пароля. Для того, что бы в тот же файл.htpasswd добавить еще одного пользователя следует убрать ключ -c из команды запуска утилиты htpasswd.exe

Htpasswd -m .htpasswd admin


Замечание

Если файл с паролями не был создан, то возможно, некоторые ключи утилиты не поддерживаются в Вашей операционной системе. Например, иногда не поддерживается ключ m. В этом случае, Вам нужно ввести htpasswd -c .htpasswd admin
Для того, чтобы посмотреть ключи и параметры работы утилиты введите htpasswd.exe /? Вам будет выдано описание интерфейса.

Итак, файл с паролями создан. Теперь Вам необходимо переписать его на сервер. Файлы с паролями очень желательно класть выше корневой директории сайта - туда, куда не будет доступа посетителям.
Если это невозможно, то файлы с паролями следует обязательно защитить. Это можно сделать с помощью файлов.htaccess. Чтобы защитить файлы с паролями создайте файл со строками, представленными в следующем листинге.

Защита файлов.htpasswd


deny from all

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

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

Для защиты директории могут использоваться следующие директивы:

  • AuthType - Тип используемой аутентификации. Для базовой аутентификации эта директива должна иметь значение: Basic
    AuthName - Имя области действия аутентификации. Текст, помогающий посетителю понять, куда он пытается получить доступ. Например, может быть написано: "Private zone. Only for administrator!"
    AuthUserFile - путь к файлу с паролями (.htpasswd).
    AuthGroupFile - путь к файлу групп, если он существует.
    Require - Одно или несколько требований, которые должны быть выполнены для получения доступа к закрытой области.

Пример файла.htaccess

AuthType Basic



require group admins

Следует более подробно описать директивы AuthUserFile и AuthGroupFile. В них прописываются абсолютные пути к соответствующим файлам от корня сервера.

Внимание!

Относительные пути работать не будут!

Путь от корня сервера, можно узнать, спросив у администрации сервера, либо можно попробовать выяснить его самим. Для этого выполните функцию phpinfo(). На экран будет выведена фиолетовая таблица. Значение абсолютного пути от корня сервера можно посмотреть в переменных: doc_root, open_basedir, DOCUMENT_ROOT.
Директива Require определяет кому разрешен доступ к закрытой области. Например,

  • require valid-user - разрешен доступ всем прошедшим проверку
  • require user admin alex mango - разрешен доступ только посетителям с именами admin, alex, mango. Естественно, они должны пройти аутентификацию.
    AuthName "Private zone. Only for administrator!"
    AuthUserFile /usr/host/mysite/.htpasswd
    require valid-user

    Доступ только пользователям admin и root

    AuthType Basic
    AuthName "Private zone. Only for administrator!"
    AuthUserFile /usr/host/mysite/.htpasswd
    require user admin root

    Доступ только пользователей из группы admins

    AuthType Basic
    AuthName "Private zone. Only for administrator!"
    AuthUserFile /usr/host/mysite/.htpasswd
    AuthGroupFile /usr/host/mysite/group
    require group admins

    Запрет доступа только к файлу private.zip


    AuthType Basic
    AuthName "Private zone. Only for administrator!"
    AuthUserFile /usr/host/mysite/.htpasswd
    require valid-user

Частенько бывает ситуация, когда необходимо на сайте защитить папку паролем и или поставить пароль на целый сайт. На веб сервере Apache это возможно при использовании файлов.htaccess и.htpasswd.

1.Для начала, надо создать файл.htpasswd

а) исходя из нашил реалий, не каждый пользователь хостинга, имеет доступ к серверу по ssh. Так что если дома Вы счастливый обладатель OS Windows, для этого можно использовать утилиту htpasswd.exe, что бы создать файл.htpasswd на своём домашнем компьютере.

Нажмите "Пуск -> Выполнить", введите в строку ввода cmd и нажмите ОК. Вам откроется окно утилиты CMD. Перейти в директорию с файлом htpasswd.exe. Теперь нужно дать команду на создание файла с паролем. Введите в командную строку следующее:

htpasswd -cm .htpasswd admin

Cm - это ключи для утилиты.

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

Ключ m - определяет шифрование по алгоритму MD5.

Htpasswd - имя файла с паролями (можете использовать любое имя).

admin - имя посетителя (логин), которому будет разрешен доступ в закрытую область сайта.

В ответ, должен появится запрос на ввод пароля и далее его повтор.

Если все правильно, то в завершении появится сообщение: Adding password for user admin.

И в директории рядом с htpasswd.exe появится файл.htpasswd, к котором будет находиться строка с именем пользователя и хеш-кодом его пароля.

admin:$apr1$yQ3.....$O0qnYRoFRdZQUhs/jDaQP0

Для того, что бы в тот же файл.htpasswd добавить еще одного пользователя следует убрать ключ -c из команды запуска утилиты htpasswd.exe

htpasswd -m .htpasswd admin

Теперь файл.htpasswd можно скопировать на хостинг в отдельную директорию, например в /var/www/html/my-site/admin/

б) если Вы имеете доступ по ssh или у Вас установлен дома Linux, то файл.htpasswd генерируется с помощью утилиты htpasswd из комплекта Apache. Для этого нужно написать в командной строке следующее:

htpasswd -bc .htpasswd имя_пользователя пароль_пользователя

Теперь файл.htpasswd можно скопировать (перенести) в отдельную директорию на хостинге, например в /var/www/html/my-site/admin/

2. В директории сайта, которую Вы хотите защитить паролем, необходимо создать файл.htaccess, в который запишем такие строки:

а) если надо поставить пароль на всю директорию

AuthType Basic
AuthName "Private zone. Only for administrator!"
require valid-user

б) если надо поставить пароль на файл


AuthName "admin-zone"
AuthType Basic
AuthUserFile /var/www/html/my-site/admin/.htpasswd
require valid-user

AuthUserFile - это полный путь к файлу.htpasswd от корневой директории ОС Linux. В случае с операционной системой Windows так: c:/my_site/.htpasswd.

AuthName - "произвольный_текст" например "Панель управления". Этот текст будет отображаться в окне для ввода логина и пароля.

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



Рекомендуем почитать

Наверх