пятница, 2 ноября 2012 г.

Управляем веб сервером через .htaccess

Что такое и главное как  правильно использовать .htaccess?
 Примеры использования файла .htaccess 


Начнем с того что такое .htaccess?
Для конфигурации веб сервера (например Апача) используется конфигурационный файл httpd.conf. Скажу больше, в Linux и прочих Unix подобных системах все конфигурационные файлы имеют расширение .conf.
Но вполне естественно не один хостер не допустит  Вас к этому файлу. Но, тем не менее, вы можете конфигурировать работу сервера в своих директориях [каталогах]. А делать это можно с помощью все того же магического файла .htaccess.
А что можно сделать при помощи файла .htaccess
Да практически=многое:) 
.htaccess дает возможность конфигурировать работу сервера в отдельных директориях, не предоставляя доступа к главному конфигурационному файлу. С его помощью можно устанавливать права доступа к файлам в директории, менять названия индексных файлов, самостоятельно обрабатывать ошибки Apache, перенаправляя посетителей на специальные страницы ошибок, создавать авторизацию на уровне веб сервера, делать бан для отдельных (не очень адекватных) личностей и многое, многое другое)(вплоть даже до того, что поставить в этот файл заплатку для веб сервера:) 
Самое главное: -> он же синтаксис .htaccess
Пути к файлам и директориям должны строго указываться от корня самого сервера, вот например:
 /home/bestcatalog.hut4.ru/WWW/
Это означает, что каталог WWW со скриптами моего сайта находится в  папке /home/bestcatalog.hut4.ru/WWW/index.php
Соответственно для самого сервера я являюсь пользователем bestcatalog.hut4.ru а WWW это моя папка))
Оный путь можно увидеть в логах сервера или уточнить у администратора[сервера:]
А можно выяснить с помощью PHP скрипта.
Назовем его path_server.php, и будет он у нас с таким содержанием:

<?php

$path = getcwd ();

$path = str_replace ('\\', '/', $path);

echo
$path;

?>

Теперь для того, что-бы узнать полный путь до (нужного:) каталога на сервере, кидает в каталог этот скрипт, и вводим в адресной строке браузера:
http://ваш_сайт.ru/папка_куда_кинули_скрипт/path_server.php
Идем дальше. Как разграничить доступ, и поставить бан по ip на уровне .htaccess
С чего начать? А начать нужно с начала, т.е. с создания самого файла.
Кстати если Вы имеете статический ip адрес, то можно и ограничиться только инструкцией:

order deny,allow
deny from all
allow from 127.0.0.1
  
И положить файл .htaccess с этим содержанием в каталог где находится админка)
По умолчанию в WordPress это /home/bestcatalog.hut4.ru/WWW/wp-admin
Можно поставить БАН конкретному ip,для этого достаточно написать только:

deny from ip_adres

Если ip больше одного то пишем их через пробел

deny from 10.2.5.12 192.168.14.21 172.16.16.9

При написании авторизации сразу оговорюсь, что сервера под Windows и Unix[Linux] воспринимают то, что написано в .passwd (или другом файле) для хранения паролей по разному. И если Windows достаточно текстовой строки в качестве пароля, то Unix подавай зашифрованный пароль. И по этому я вынес пример создания авторизации и защиты админки блога на платформе WordPress с использованием все того, же файла .htaccess и php скрипт для шифрования пароля на отдельную страницу!

17 комментариев:

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

    ОтветитьУдалить
    Ответы
    1. Поддерживая просьбу Pandora Wikiped. Подробностей бы по больше. Уж очень сильно вопрос этот волнует.

      Удалить
    2. А по=дробности они вот авторизация на .htaccess а вот, как сделать error 404 на Вашем сайте)
      Читайте, юзайте, задавайте вопросы:)

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

    ОтветитьУдалить
  3. Master-It, Спасибо, что написали отдельную статью с подробным описанием правил в .htaccess.
    У меня к вам вопрос такого характера. Если закрыть прямой доступ к папке через .htaccess и если обнаружится какой-нибудь баг в php коде, который расположен по той же директории, хакеры могут взломать сайт или ту папку?

    ОтветитьУдалить
    Ответы
    1. Ну если обнаружится БАГ то .htaccess возможно и не поможет, хотя конеч=но(смотря какой) баг -> багу рознь!
      А для того, что-бы зайти в ту папку придется авторизоваться! Ну это чисто теоретически, а практически нужно смотреть по данному(конкретному[случаю])

      Удалить
    2. Вы можете привести пример, в каких случаях .htaccess может защитить сайт от взлома и в каких нет.

      Удалить
    3. В случае, если кто-то пытается войти в закрытый каталог например админа, то .htaccess может защитить [его] каталог авторизацией на уровне веб-сервера. Ну а если на сайте имеется уязвимый скрипт, который например неправильно фильтрует получаемые от пользователя данные пропуская XSS и SQL инъекции то конечно же нет. Ни какой .htaccess не поможет! Ну разве, что можно поставить БАН по ip злоумышленнику или редирект, но это будет всего лишь временная мера, т. к. ip легко можно изменить[подделать].

      Удалить
    4. Извините но вы не знаете как можно поменять время сервера через .htaccess ? Просто я живу в Украине а сервер в России

      Удалить
    5. SetEnv TZ Europe/Kiev

      Удалить
  4. Интересная тема, у меня взломали один из блогов и удалили пост, на востановление которого ушло не один месяц. Так что мне тоже интересно, именно от таких случаев может защитить htaccess, или нет?

    ОтветитьУдалить
  5. Я все прочитал в обоих ваших блогах, сделал всё как написано, но нечего не получается.

    ОтветитьУдалить
    Ответы
    1. Совсем ничего?
      Предлагаю пойти от простому к сложому, то есть воспользоваться методом искючения.
      Для этого достаточно в файл для хранения паролей [.htpasswd] вписать только логин, и авторизоваться!

      Удалить
  6. Тема весьма нужная и WSD на сайте предупреждает, что надо что-то поменять, а знаний для воплощения не хватает.Вот так и получается - что хочется и колется... а проблемы и пробелы остаются

    ОтветитьУдалить
  7. Я вот не знаю что делать с кучей 404 файлов, которые у меня возникают из-за тегов, а теги нужны, чтобы больше было переходов из поисковиков. Может вы знаете как решить вопрос?

    ОтветитьУдалить
  8. Что за файлы 404?
    Если можно опишите подробно, и, что именно способствует их созданию.

    ОтветитьУдалить
  9. Мастера, - честь вам и хвала. Уважаю профессионалов своего дела. Лучше обратиться к спецу, чем пытаться его подрожать. Для меня это всё, - китайская грамота. Чем больше читаю, - тем больше себя китайцев ощущаю. Может когда и до моей головы дойдёт то, о чём вы тут говорите. Но, наверное, оно уже устареет во времени. Не так ли?

    ОтветитьУдалить