Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: безопасная навигация по каталогам
 
 автор: sav   (05.12.2006 в 22:02)   письмо автору
 
 

есть функция которая возвращает дескриптор каталога ей передаётся параметр $DIR как сделать так чтобы ниже $_SERVER['DOCUMENT_ROOT'] не пускала при возможности использовать такие символы ../../


<?
    
function ListFiles($DIR)
    {
        
$dh=glob($DIR.'/*');
        for (
$i=0;$i<count($dh);$i++)
        {
            echo 
basename($dh[$i]);
        }

    }
?>

   
 
 автор: Саня   (06.12.2006 в 02:35)   письмо автору
 
   для: sav   (05.12.2006 в 22:02)
 

<? 
    
function ListFiles($DIR
    { 
        
$dh=glob(trim($DIR"./").'/*'); 
        for (
$i=0;$i<count($dh);$i++) 
        { 
            echo 
basename($dh[$i]); 
        } 

    } 
?>

   
 
 автор: sav   (06.12.2006 в 14:07)   письмо автору
 
   для: Саня   (06.12.2006 в 02:35)
 

[b][Саня/b]
а если ему передать в параметр $DIR типа этого ../../../../ то он пропустит ниже $_SERVER['DOCUMENT_ROOT'] ... нужно чтобы не пускала, но не запрещать эти символы ../../

   
 
 автор: sav   (06.12.2006 в 20:21)   письмо автору
 
   для: sav   (06.12.2006 в 14:07)
 

Уже нашёл решение может кому нибудь пригодится


<?
$RootPath 
$_SERVER['DOCUMENT_ROOT'];
$SlashCount substr_count($RootPath'/');
function 
RetPath($PATH$RootPath$SlashCount)
{
    
$RealPath=realpath($RootPath.$PATH);
    
$RealPath=str_replace('\\','/',$RealPath);
    
$GetLevel=substr_count($RealPath'/');
    if(
$GetLevel<$SlashCount)
        die(
'mazafaka');
    if(
$GetLevel==$SlashCount)
        return 
'/';
    
$HtmlPath=str_replace($RootPath''$RealPath);
    return 
$HtmlPath;
}
RetPath($_GET['dir'], $RootPath$SlashCount);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования