Главная > Компьютеры > .htaccess - запреты и секреты
.htaccess - запреты и секреты3 августа 2012 20:17. Разместил: Altyn |
||||||||||||||||||||||||||||||||
Очень часто вебмастер сталкивается с вопросом: как с помощью файла .htaccess запретить доступ, к какой либо части сайта, или ко всему сайту.
Первой причиной такого желания может стать наличие админской части сайта и необходимость скрыть ее от чужих глаз и рук. Вторым поводом к запрету доступа может являться процесс внедрения изменений на вашем сайте с необходимостью перенаправления пользователей на временную страницу информации.
В этой статье я покажу как можно:
В интернете море неисчерпаемых источников информаций на тему работы с файлом .htaccess . Тем не менее, чтобы выполнить вышеперечисленные задачи нужно пропустить через себя большой поток информации и понять, что действительно нужно, а без чего можно обойтись. Поэтому я постараюсь кратко и наглядно изложить суть задач и их решения. Как с помощью .htpasswd и .htaccess запретить доступ к папке сайта.
Если ты читатель не знаешь, что это за файлы поясню: .htaccess – файл дополнительной конфигурации веб-сервера. .htpasswd – файл содержащий пары логин и пароль в MD5 хеше, используемый в механизме базовой аутентификации. С помощью этих двух файлов можно запросто сделать так чтобы при попытке открыть сайт пользователям предлагалось ввести логин и пароль.
![]()
Только после того как пользователь правильно введет пару логин и пароль, соответствующую занесенной в файл .htpasswd, он будет допущен к просмотру скрытой области сайта. Для того чтобы это осуществить достаточно создать файл .htaccess и поместить его в ту папку сайта к которой вы хотите запретить доступ.
1. Добавьте в созданный файл следующее содержание:
2. Теперь создайте файл .htpasswd и в него поместите следующую строку:
Строка эта содержит пару логин и пароль где:
Чтобы генерировать любые пароли для файла .htpasswd можно воспользоваться утилитой для генерации паролей htpasswd.exe Скачать утилиту для генерации паролей htpasswd.exe
Пользоваться утилитой для генерации паролей очень легко, нужно создать файл .htpasswd и в программе выбрать его с помощью кнопки "Old file". Далее все интуитивно понятно, вводим новых пользователей и пароли к ним, затем жмем на "Update". Кстати данная утилита генерации паролей для htpasswd, может не только создавать новые, но и редактировать старые пароли. Что очень удобно, в случае если вы забыли старый пароль. Еще стоит сказать что эта утилита является стандартной и поставляется вместе с сервером Apache.
На многих сайта и блогах, рассказывается, как пользоваться ей с помощью CMD, но нигде не встречал о том, как создавать пароли с ее графическим интерфейсом, а это может быть очень удобным для начинающих вебмастеров.
![]()
Теперь важный для новичков момент! Напротив директивы AuthUserFile в .htaccess должен быть прописан абсолютный путь до файла с паролями. Узнать путь можно многими способами, но самый легкий и точный, на мой взгляд, это выполнить в index.php строку кода:
Выполнение этой строчки кода приведет к выводу на страницу абсолютного путь до корня сайта, который нам и нужен.
Внимание важное замечание! Очень полезным будет расположить файл с паролями вне папки с содержимым сайта. Это позволит защитить его от злоумышленников.
Если у тебя читатель нету прав на создание файлов вне главного каталога сайта, не переживай, ты все равно сможешь его защитить если пропишешь в .htaccess строки:
Настало время проверить работоспособность базовой авторизации. Откроем сайт через любой браузер.
Теоретически после проделанных действий любой браузер выведет нам форму базовой аутентификации, если этого не произошло, нужно еще раз проверить указанный в .htaccess путь к .htpasswd и исправить его. Запретим доступ к одному файлу
Кроме запрета на директорию можно установить ограничение доступа к конкретному файлу, для этого нужно обрамить запись из .htaccess в тег <Files>
Хочу обратить внимание на то, что рассмотренный вид аутентификации, не должен являться основным средством защиты данных. Т.к. данные (логин и пароль) пересылаются между клиентом и сервером в открытом виде, и могут быть перехвачены злоумышленниками. Как с помощью .htaccess и .htpasswd настроить политику прав пользователей
Кроме простого запрета для всех пользователей с помощью инструмента базовой аутентификации сервера, можно сделать управление ролями. Конечно, высококлассной системы распределения ролей не получится но, тем не менее, что то похожее реализовать можно.
Допустим, у нас есть сайт http://lifeexample.ru и три директории отличающиеся степенью секретности.
Чтобы реализовать разграничение пользователей, нужно объединить их в группы. Для этого в системе базовой аутентификации предусмотрен механизм работы с группами пользователей.
Создадим файл .htgroup, в него запишем группы и их пользователей в таком виде:
Замечу, что пользователь с логином user3 состоит сразу в двух группах, и это значит, что он имеет доступ с админской части сайта. Сразу подправим файл .htpasswd и с помощью скачанной ранее программки для генерации паролей, занесем него всех пользователей из созданных групп.
Теперь в настройках .htaccess заменим строку:
на следующую:
И расположим файл в главной директории сайта. Проверяем… И видим что ничего не работает. Это вполне объяснимо ведь мы не указали путь до файла с группами. Перед require добавим AuthGroupFile указав в ней путь:
Теперь можно радоваться, все заработало.
Т.к. файл .htaccess располагается в главной директории, вышеперечисленными действиями мы отрываем доступ к http://lifeexample.ru/index.php для всех имеющихся пользователей.
Следующей задачей будет отсеять обычных пользователей и оставить доступ только группам Admins и Roots к части http://lifeexample.ru/admin/. Сделать это проще чем кажется, нужно только скопировать .htaccess из главной директории, в папку "/admin” и подправить список допустимых групп, удалив из него группу Users.
Аналогичную операцию проделаем для папки "/admin/root” предназначенной только суперпользователям. Скопируем файл настроек и оставим там только группу Roots.
Еще один важный момент, если в .htaccess до всех этих операций содержались другие настройки, то при копировании этого файла в папки сайта, можно оставить только строки отвечающие за права доступа. Страница заглушка
В начале статьи я упомянул о том, что задача запрета доступа к сайту возникает при проведении технических работ. В этот период все пользователи должны перенаправляться на страницу "Заглушку”, в которой будет расположена информация о приводящихся работах.
![]() Чтобы реализовать данную потребность нужно внести некоторые изменения в тот .htaccess, что мы уже сделали, дописав в самое его начало следующие правила:
Добавив эти строки и, заменив "127.0.0.1” на свой реальный IP адрес, только мы будем иметь доступ к содержимому сайта, а все остальные IP адреса, будут перенаправляться на страницу zaglushka.php. Кстати ее нужно будет создать и поместить в корневую директорию.
Может случиться так что модуль перенаправления mod_rewrite.c будет отключен хостером. Тогда с эту задачу можно будет решить с помощью php:
Для того чтобы получить доступ к сайту нужно ввести http://имя сайта/?123456789, если код не будет веден, пользователю будет выдана страница заглушка. Конечно, можно обойтись и более коротким куском кода:
Но первый вариант решения мне кажется, наиболее элегантным, поскольку с одного IP может входить сразу несколько пользователей, и один из них не должен иметь доступ к сайту. Для этого в первом способе используется секретный ключ.
С помощью данного скрипта можно реализовать хорошую систему аутентификации сайта с запретом доступа отдельных пользователей.
В отличии от базовой аутентификации с .htaccess и .htpasswd при которой кэширование параметров аутентификации (имя, пароль) осуществляет только в пределах одного сеанса, в этом случает обратившись к сайту единожды, и введя секретный код, известный только администратору, нам не придется его больше вводить в течении установленного времени.
Аналогичный механизм с использованием cookes и секретного ключа можно выполнить с помощью .htaccess:
Закрыть сайт для всех ip адресов
Иногда случается так, что нужно закрыть доступ к сайту кардинально без использования аутентификации, для всех, кроме себя конечно. Сделать это можно все тем же .htaccess
127.0.0.1 – заменить на свой. Закрыть сайт для списка ip адресов
В этой статье мы рассмотрели тему: "Как с помощью htaccess запретить доступ к части сайта”, статья получилась объемная и хотелось бы подвести итоги. И так самое главное было понять, как работает механизм базовой аутентификации, и зачем он вобще нужен. Напомню, что данную аутентификацию лучше не использовать там где нужно реально защитить важную информацию. Если ты уважаемый читатель еще не разобрался с тем как настраивать файлы паролей и групп, предлагаю тебе скачать их в готовом виде:
Вернуться назад |