Защита сайта и директорий через htaccess и htpasswd Инструкция

Рассмотрим интересный способ защиты сайта, или директории (папки) сайта, например с административной частью.

Данный способ достаточно прост, но в тоже время является очень надежным, при условии использования «нормального хостинга», так как данный тип защиты паролем через htaccess и htpasswd строиться средствами самого сервера Apache.

Ещё один плюс данного способа – это то, что происходит защита паролем самой директории и плюс подпапок и абсолютно всех файлов внутри этой папки. Также без авторизации не возможно будет отправить ни $_POST ни $_GET запросов к защищенным файлам…вообще ничего.

Из минусов – этот способ, как правило, подойдет, если пользователей, которые будут иметь доступ, не много…так как для каждого пользователя отдельно генерировать пароль надоест очень быстро.

Почему не стоит данный способ использовать на «копеечном хостинге»?

Дело в том что, как правило, такой тип хостинга подразумевает не качественную настройку Apache, и этим самым Вы можете просто открыть злоумышленникам дорогу в «защищаемую» директорию.

И так приступим…

Инструкция защиты через htaccess и htpasswd


Нам потребуется:
  • Доступ по протоколу FTP
  • Наличие прав на создание-редактирование файла htaccess
  • Утилита для создания и шифрования пароля htpasswd.exe, ссылка для загрузки
Создаем файл для защиты htaccess

Проще всего этот файл создать с помощью обычного блокнота. Жмем правой кнопкой мыши на рабочий стол: создать -> текстовый документ. Открываем его с помощью обычного блокнота 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/защищаемая_директория/

У Вас должно появиться окно ввода логина и пароля. Если этого не произошло, значит Вы где-то ошиблись…проделайте весь процесс заново и очень внимательно.

Попробуйте ввести не правильный пароль и увидите сообщение об ошибке.

Сеанс будет длиться до тех пор, пока Вы не закроете браузер.

Пишите в комментариях, если возникнут проблемы…разберемся вместе.

8 комментариев

Anastasia
Добрый день. Скажите, пожалуйста, могу ли я защитить паролем сам файлик .htaccess? У нас на сайте вирус, который регулярно подменяет файл .htaccess.

Пробую писать так, верно ли это? Т.к. все равно подменяется.

<Files .htaccess>
AuthType Basic
AuthName «Private zone. Only for administrator!»
AuthUserFile /home/user1100741/www/сайт/.htpasswd
require valid-user
delitme
Вы можете поставить права 444 на файл .htaccess
Это защита на запись. Доступно только чтение.

Пишите лучше так


AuthType Basic
AuthName "Private zone. Only for administrator!" 
AuthUserFile /home/user1100741/www/сайт/.htpasswd
require valid-user
<Files .htpasswd> 
   deny from all
</Files>
Anastasia
Я изменяю права на 444, но спустя какое-то время файл перезаписывается и права его изменяются на 644.

Я написала так, как Вы посоветовали. Но тогда при загрузке сайта появляется окно авторизации. А мне нужно защитить файлик .htaccess, чтобы он не перезаписывался вирусом.
Anastasia
Подскажите, пожалуйста, можно ли как-то защитить файлик .htaccess от изменения кем бы то ни было. Так как то, что я изменяю права на доступ, не помогает. Они потом сами изменяются на 644.
delitme
Тогда нужно искать вирус.

Посмотрите тут revisium.com/ai/
Хорошая штука.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.