Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Условни конструкции в PHP
  1. Въведение
  2. if - else
  3. while
  4. for
  5. switch
     
Автор  @Djimbo (01.05.2004 08:32)  съобщение до автора
Погледнат  3110 пъти  добави към любими
Оценка  добави коментар
Гласове  3  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 5

 



В предния брой създадохме малък сайт, като страниците в него се изграждаха "в движение", като вземаха съдържанието си от няколко различни файла. Името на файла със съдържанието се предаваше като част от URL, например http://www.server.com/index.php?p=once.

Това означаваше, че index.php трябва да включи в себе си съдържанието на файла once.php. Тогава зададохме въпроса, какво би се получило, ако по някаква причина на index.php му се зададе да включи файл, който не съществува? Например при опит за извикване на /index.php?p=onced, ще получим съобщение за грешка :

Warning: Failed opening 'onced.php' for inclusion (include_path='.; apacheincludes;apachehtdocs;') in C:apachehtdocsindex.php on line 17

Макар и силно подценявана, възможността да се случи такава грешка е много голяма. Причините също могат да бъдат разнообразни. При по-големи сайтове става невъзможно да се проследи включването на всеки един файл. В тях се използват конфигурационни файлове, както и файлове с код за множество отделни части от показваната на монитора страница.
А и при недообмисляне на рисковете, техниката на включване на множество файлове един в друг би могла да представлява сериозна дупка в сигурността на сайта, дори и на целия сървър. Кракерите знаят това и доста често умишлено предизвикват подобни грешки, чрез манипулиране на URL-то, за да проверят дали няма да открият възможност за експлойтване.

Тук трябва да посочим и друга възможна уязвимост на този начин за съставяне на сайтове. Не използвате в кода си ред като:

CODE
1
include ("$p");

Тук се очаква да бъде включен файлът, чието име се съдържа в променливата $p, например once.php. Ситуацията представлява огромен риск за сигурността на сайта и сървъра, защото дава възможност за извеждане на който и да е файл, за който съръвърът има право на четене. Поразиите, които могат да се направят са големи, така че е необходимо да вземете мерки, за да ги предодвратите.

Можете да направите поне две неща - да определеите точен път до файловете, които да се включват и да определите точния им тип (например .txt, .html, .inc и други). Този вариант на същия ред е доста по-сигурен :

CODE
1
include ("/httpd/www/site/files/$p.html");

В примера се предполага, че файловете, които ще включвате се намират в директория files в Уеб директорията на сайта - httpd/www/site. Този път до нея е примерен, тук трябва да проверите как изглежда той в системата, която използвате.
Ползвайте абсолютни, а не относителни пътища, защото относителните са лесно манипулируеми. Те биха могли да бъдат преодоляни чрез повикване като :



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


Ключови думи: цикли PHP условни конструкции


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


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

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

Еmail  
 

 

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



IT-PLACE.NET © 2004 - 2008