Защита сайта и директорий через htaccess и htpasswd Инструкция
Рассмотрим интересный способ защиты сайта, или директории (папки) сайта, например с административной частью.
Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строиться средствами самого сервера Apache.
Ещё один плюс данного способа – это то, что происходит защита паролем самой директории и плюс подпапок и абсолютно всех файлов внутри этой папки. Также без авторизации не возможно будет отправить ни $_POST ни $_GET запросов к защищенным файлам…вообще ничего.
Из минусов – этот способ, как правило, подойдет, если пользователей, которые будут иметь доступ, не много…так как для каждого пользователя отдельно генерировать пароль надоест очень быстро.
Почему не стоит данный способ использовать на «копеечном хостинге»?
Дело в том что, как правило, такой тип хостинга подразумевает не качественную настройку Apache, и этим самым Вы можете просто открыть злоумышленникам дорогу в «защищаемую» директорию.
И так приступим…
Нам потребуется:
Проще всего этот файл создать с помощью обычного блокнота. Жмем правой кнопкой мыши на рабочий стол: создать -> текстовый документ. Открываем его с помощью обычного блокнота Windows. Жмем Файл -> Сохранить как…
Далее в поле «Имя Файла» пишем .htaccess вместе с точкой в начале. В поле «Тип Файла» выбираем «Все Файлы(*.*)». Жмем «Сохранить» и закрываем. Готово.
Копируем скачанную утилиту в корень диска C. Далее поймете, зачем именно в корень.
Запускаем консоль («Пуск» -> «Выполнить», пишем cmd и жмем «ОК»). Переходим в корень диска C (пишем команду cd/ ).
В самой нижней строчке, где мигает курсор должно быть написано «C:\>» — мы в корне диска C.
Теперь пишите следующую команду:
На конце команды admin – это имя пользователя (Логин). Можете использовать любое(английские буквы, без пробелов).
Вам предложат ввести пароль. Вводим, переключившись на английскую раскладку. Жмем энтер на клавиатуре и повторно вводим тот же пароль. Опять энтер. Готово. Файл .htpasswd создан в корне диска C. Закрываем консоль.
Подключаемся к сайту по FTP и переходим в директорию, которую защищаем через htaccess и htpasswd.
Перекидываем в корень этой папки созданный файл .htpasswd
Теперь нам нужно выяснить абсолютный путь к файлу .htpasswd на хостинге…если Вы уже знаете – хорошо, если нет, то вот что нам нужно:
1. Рядом с файлом паролей на хостинге создаем файл, например er2344fsdxaasdl.php
2. Отрываем окно редактирования этого файла и пишем следующий код:
3. Сохраняем и закрываем.
4. Открываем браузер и пишем в адресной строке
Жмем энтер. И видим большую таблицу о версии PHP и прочие данные.
5. Слева колонка с параметрами, справа колонка со значениями этих параметров. Нам нужно значение параметра SCRIPT_FILENAME. Допустим, оно имеет значение:
Копируем это значение куда-нибудь, без названия нашего php-файла, т.е. копируем только это:
Это и есть абсолютный путь до нашей защищаемой директория. Наш php-файл er2344fsdxaasdl.php обязательно удалить!
Теперь открываем с помощью блокнота файл .htaccess на рабочем столе (или где вы его сохраняли?). Вписываем в него:
Заметьте, у AuthUserFile прописан наш скопированный абсолютный путь плюс имя файла .htpasswd
Сохраняем изменения через Ctrl+S или «Файл» -> «Сохранить».
Теперь переносим измененный файл .htaccess на сервер в корень защищаемой папки, туда же где лежит файл .htpasswd
Вот и все. Директория защищена. Закройте браузер и запустите его снова.
Откройте в вкладке адрес
У Вас должно появиться окно ввода логина и пароля. Если этого не произошло, значит Вы где-то ошиблись…проделайте весь процесс заново и очень внимательно.
Попробуйте ввести не правильный пароль и увидите сообщение об ошибке.
Сеанс будет длиться до тех пор, пока Вы не закроете браузер.
Пишите в комментариях, если возникнут проблемы…разберемся вместе.
Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строиться средствами самого сервера Apache.
Ещё один плюс данного способа – это то, что происходит защита паролем самой директории и плюс подпапок и абсолютно всех файлов внутри этой папки. Также без авторизации не возможно будет отправить ни $_POST ни $_GET запросов к защищенным файлам…вообще ничего.
Из минусов – этот способ, как правило, подойдет, если пользователей, которые будут иметь доступ, не много…так как для каждого пользователя отдельно генерировать пароль надоест очень быстро.
Почему не стоит данный способ использовать на «копеечном хостинге»?
Дело в том что, как правило, такой тип хостинга подразумевает не качественную настройку Apache, и этим самым Вы можете просто открыть злоумышленникам дорогу в «защищаемую» директорию.
И так приступим…
Инструкция защиты через htaccess и htpasswd
Нам потребуется:
- Доступ по протоколу FTP
- Наличие прав на создание-редактирование файла htaccess
- Утилита для создания и шифрования пароля htpasswd.exe, ссылка для загрузки
Проще всего этот файл создать с помощью обычного блокнота. Жмем правой кнопкой мыши на рабочий стол: создать -> текстовый документ. Открываем его с помощью обычного блокнота Windows. Жмем Файл -> Сохранить как…
Далее в поле «Имя Файла» пишем .htaccess вместе с точкой в начале. В поле «Тип Файла» выбираем «Все Файлы(*.*)». Жмем «Сохранить» и закрываем. Готово.
Создание файла паролей htpasswd
Копируем скачанную утилиту в корень диска C. Далее поймете, зачем именно в корень.
Запускаем консоль («Пуск» -> «Выполнить», пишем cmd и жмем «ОК»). Переходим в корень диска C (пишем команду cd/ ).
В самой нижней строчке, где мигает курсор должно быть написано «C:\>» — мы в корне диска C.
Теперь пишите следующую команду:
htpasswd -cm .htpasswd admin
На конце команды admin – это имя пользователя (Логин). Можете использовать любое(английские буквы, без пробелов).
Вам предложат ввести пароль. Вводим, переключившись на английскую раскладку. Жмем энтер на клавиатуре и повторно вводим тот же пароль. Опять энтер. Готово. Файл .htpasswd создан в корне диска C. Закрываем консоль.
Подключаемся к сайту по FTP и переходим в директорию, которую защищаем через htaccess и htpasswd.
Перекидываем в корень этой папки созданный файл .htpasswd
Теперь нам нужно выяснить абсолютный путь к файлу .htpasswd на хостинге…если Вы уже знаете – хорошо, если нет, то вот что нам нужно:
1. Рядом с файлом паролей на хостинге создаем файл, например er2344fsdxaasdl.php
2. Отрываем окно редактирования этого файла и пишем следующий код:
<?
phpinfo();
?>
3. Сохраняем и закрываем.
4. Открываем браузер и пишем в адресной строке
http://www.сайт.ru/защищаемая_директория/er2344fsdxaasdl.php
Жмем энтер. И видим большую таблицу о версии PHP и прочие данные.
5. Слева колонка с параметрами, справа колонка со значениями этих параметров. Нам нужно значение параметра SCRIPT_FILENAME. Допустим, оно имеет значение:
/home/w/user/сайт.ru/public_html/защищаемая_директория/er2344fsdxaasdl.php
Копируем это значение куда-нибудь, без названия нашего php-файла, т.е. копируем только это:
/home/w/user/сайт.ru/public_html/защищаемая_директория/
Это и есть абсолютный путь до нашей защищаемой директория. Наш php-файл er2344fsdxaasdl.php обязательно удалить!
Сам процесс защиты через htaccess и htpasswd
Теперь открываем с помощью блокнота файл .htaccess на рабочем столе (или где вы его сохраняли?). Вписываем в него:
AuthType Basic
AuthName "Admin interface"
AuthUserFile /home/w/user/сайт.ru/public_html/защищаемая_директория/.htpasswd
require valid-user
<Files .htpasswd>
deny from all
</Files>
Заметьте, у AuthUserFile прописан наш скопированный абсолютный путь плюс имя файла .htpasswd
Сохраняем изменения через Ctrl+S или «Файл» -> «Сохранить».
Теперь переносим измененный файл .htaccess на сервер в корень защищаемой папки, туда же где лежит файл .htpasswd
Вот и все. Директория защищена. Закройте браузер и запустите его снова.
Откройте в вкладке адрес
http://www.сайт.ru/защищаемая_директория/
У Вас должно появиться окно ввода логина и пароля. Если этого не произошло, значит Вы где-то ошиблись…проделайте весь процесс заново и очень внимательно.
Попробуйте ввести не правильный пароль и увидите сообщение об ошибке.
Сеанс будет длиться до тех пор, пока Вы не закроете браузер.
Пишите в комментариях, если возникнут проблемы…разберемся вместе.
38 комментариев