it-place.net > Уроци > Други
Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Ръководство за използване на . htaccess
  1. Основни разяснения и съвети
  2. Съобщения за грешки (Error Documents)
  3. Защитени директории
  4. Блокиране на така наречените bad bots
  5. Предпазване на самия .htaccess от web-достъп
     
Автор  plamenSm (19.05.2008 12:22)  съобщение до автора
Погледнат  2455 пъти  добави към любими
Оценка  добави коментар
Гласове  1  изпрати на приятел
Коментари  (2)  абонирай се за Други
    Страница 3 / 5

 



3. Защитени директории

Ако искате определени директории от вашия сайт да са достъпни само за определени хора и да сте сигурни, че не възможно някой с достатъчно познания да достигне до вашите скриптове или друг сорс код, то .htaccess е решението, което ви трябва.

Има различни механизми за защита на определени области: сървърно базирани (ASP, PHP, Perl и други) или клиент-базирани (JavaScript). Последните са достатъчно несериозни за да се спираме на тях.

Например в PHP можете да защитите страници чрез включване на подходящи HTTP хедъри („WWW-Authenticate: Basic realm=....”, „HTTP/1.0 401 Unauthorized”) и използване на суперглобалните променливи „$_SERVER['PHP_AUTH_USER']” и „$_SERVER['PHP_AUTH_PW']”. Но също така можете да използвате и възможностите, които предоставя .htaccess, като предимството е, че няма да се наложи да пишете програмен код.

Първото, което трябва да направите е да създадете файл наречен .htpasswd. Името на файла, начина на ъплоуд и режима на достъп отговаря на същите правила, както и .htaccess. За подробности се върнете в началото на урока. В този файл се записват имената и съответните им пароли (в криптиран вид) с които единствено може да се разреши web-достъп до директорията в която се намира съответния .htaccess файл. .htpasswd файлът трябва да съдържа по един ред за всеки оторизиран потребител. Синтаксиса е следния::

CODE
1
2
3
user1:password1
user2:password2
...

За криптиране на паролите може да използвате например handy-dandy tool.

От съображения за сигурност, трябва да поставите файла с паролите в директория, която не е web-достъпна.

Какво трябва да запишете в .htaccess:

CODE
1
2
3
4
5
AuthUserFile [i]usr/local/you/safedir[/i].htpasswd
AuthGroupFile
/dev/null
AuthName EnterPassword
AuthType Basic
require user user1

Първия ред указва пълния път спрямо корена до файла с допустимите потребители, но забележете, че на последния ред е указан само user1. Това е подходящ синтаксис, ако желаете определени потребители да имат достъп до определени директории. Ако искате всички описани в посочения .htpasswd файл потребители да имат достъп до директорията, използвайте записа: „require valid-user”.

AuthName е името на защитената област. Можете да замените това име с по-подходящо според случая. Например „Restricted Area”.

AuthType е типа на използвания механизъм. В случая - Basic.


4. Разрешаване на SSI чрез htaccess

Много програмисти биха искали да използват удобствата, които предлага SSI (Server Side Includes), но не могат поради ограничение наложено от администратора на техния хостинг. Можете да промените това, чрез .htaccess, но първо се уверете, че по този начин не нарушавате правилата за ползване. Най-добре е да говорите с администратора.

CODE
1
2
3
AddType text/html .shtml
AddHandler server
-parsed .shtml
Options Indexes FollowSymLinks Includes

Първата линия указва на сървъра, че страниците с разширение .shtml (Server parsed HTML) са валидни. Втората линия включва сървърния парсер за файлове с разширение .shtml. Тоест указва на сървъра, че тези файлове трябва да се проверяват за SSI команди (и съответно изпълняват). Последната линия е просто техническа подробност, но трябва да присъства.

И това е. Сега можете да използвате SSI. Не бързайте да променяте разширенията на всичките си файлове на .shtml. Просто вмъкнете като втора линя в горния код:

CODE
1
AddHandler server-parsed .html

Това ще накара сървъра да проверява и .html файловете за SSI команди. Идеята не е много добра доколкото ще доведе до допълнително излишно натоварване на сървъра, но пък ще ви спести време. А и е един вид елементарна защита, тъй като не подсказва на потребителите, че страницата съдържа SSI инструкции, които могат да станат обект на хакерски намеси. Както обикновено най-добре е да прецените сами според случая дали да използвате тази опция. Ако решите да разделите страниците на .shtml и .html, тази втора линия не ви е необходима. Ако не сте сигурни какво ще правите, добавете:

CODE
1
DirectoryIndex index.shtml index.html

Този ред задава страницата по подразбиране да бъде index.shtml, а ако такава липсва, ще се зареди index.html. Още за подразбиращата се страница ще разгледаме по-късно.


5. Блокиране на достъпа от определени IP адреси

Има хора или групи, които опитват да причинят вреди на сайта ви? - Има и решение- блокирайте достъпа им! Добавете код подобен на този (всяка команда е на отделен ред):

CODE
1
2
3
4
order allow,deny
deny from
123.45.6.7
deny from 012.34.5.
allow from all

Можете да блокирате достъпа на определен IP адрес или интервал от адреси. В горния пример е блокиран достъпа от адрес 123.45.6.7, както и от всички адреси започващи с 012.34.5. (012.34.5.0, 012.34.5.1 ...... 012.34.5.255). Втория вариянт едва ли има практическо приложение, но е допустим.

Можете още да използвате забрана за всички: deny from all. Освен IP адреси може да се използват и имена на домейни: deny from .knowhacker.com, което ще забрани достъпа от всички поддоменйни на knowhacker.com (www.knowhacker.com, virtual.knowhacker.com и т.н.).


6. Блокиране на достъпа на потребител / домейн по начина на обръщение

Блокирането на трафика за потребители или сайтове който минава през определен домейн е друг вариант за ограничаване на достъпа. Да предположим, че разглеждате вашите лог-файлове и забелязвате голямо количество обръщения от определен сайт. Когато обаче прегледате въпросния сайт не откривате никъде линк към вашия. Обръщенията към вашия сайт явно са необичайни. Вероятно става въпрос за използване на ресурси от вашия сайт като изображения, .css файлове и други, които се знае, че не се променят. Като се има предвид, че в log-файловете се записват всички видове обръщения, както и информация от къде са дошли, можете да решите да спрете някои от тях.

За да направите това обаче, преди всичко е необходимо да имате инсталиран модул mod_rewrite на вашия Apache сървър. По подразбиране този модул се инсталира заедно със сървъра, но все пак проверете. И така за да забраните целия трафик породен от обръщение през определен домейн, използвайте следния код:

За един домейн:

CODE
1
2
3
4
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite\.com [NC]
RewriteRule .* - [F]


За няколко домейна:

CODE
1
2
3
4
5
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} anotherbadsite\.com [NC]
RewriteRule .* - [F]

Забележете, че точката е записана като ескейп последователност. Това е така, защото тук RewriteCond използва регулярни изрази (без символа ‘\’ точката ще има смисъл „които и да е символ”). Флагът [NC] („Non Case sensitive”) в края на израза задава да не се прави разлика между малки и големи букви. И накрая - последния ред от примера задава действието, което да се извърши при намиране на съвпадение в RewriteCond условията: „FAIL”. Тоест отговорът на сървъра ще бъде състояние 403 - Forbidden error. Разликата между двата примера е, че когато се изреждат RewriteCond, трябва да се постави флаг OR.



 << Предишна страница Следваща страница >> 


Ключови думи: .htaccess .htpasswd deny from all require valid-user защитени директории .htaccess файл


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

  MasterA на 18.06.2008 11:53

  Този урок е добър !!!

  Miro на 25.05.2008 15:33

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008