Безопасный апплоуд файлов на сайт

Discussion in 'PHP' started by svalka, 5 Apr 2009.

  1. svalka

    svalka New Member

    Joined:
    23 Mar 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Имеем:
    1.Форма для загрузки картинки на сайт.
    2.Ограничение по весу... (ну допустим 3 МБ).
    3.Место под сайт 1Гиг.
    4.Приходит баклан и апплоудит изошку на 8Гиг.

    Что происходит?
    Считывание веса файла - отдается апачем, после загрузки. Значит в момент загрузки апач кладет куда то темпак / темпаки и грузит оперативку ...

    Что бы такое предпринять, находясь у хостера, что бы не допустить этой байды? Если отвечаете то просьба без флуда..только по делу!

    АСЯ 195377
     
  2. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    ограничить макс размер аплоада в php.ini? вряд-ли хостер даст тебе заливать пару гиг за раз.
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    https://forum.antichat.ru/showpost.php?p=837324&postcount=431

    ЕНОТ
    PHP:
    <?php 
    /* 
      Пример загрузки файлов на сервер 
    */ 
    #Дира для загруженных файлов 
    $uploaddir ''
    #Разрешённые типы файлов (через запятую) 
    $types 'jpeg,gif,png,rar,zip'
    #Максимальный размер файла (в килобайтах) 
    $maxsize 100

    if(!empty(
    $_FILES)){ 
        
    $maytypes explode(','str_replace(' '''$types)); 
        foreach(
    $maytypes as $maytype){ 
            if(
    stristr($_FILES['filename']['type'], $maytype)){ 
               
    $may 1
               break; 
            }else{ 
               
    $may 0
            } 
        } 
        if(
    $may){ 
            if(
    $_FILES['filename']['size'] <= $maxsize*1024){ 
                
    $dir './'.$uploaddir.'/'.basename($_FILES['filename']['name']); 
                if(
    copy($_FILES['filename']['tmp_name'], $dir)){ 
                    echo 
    'Файл успешно загружен.<br/> 
                    Ссылка на файл: <a href="'
    .$uploaddir.'/'.$_FILES['filename']['name'].'">'.$_FILES['filename']['name'].'</a>'
                }else{ 
                    echo 
    'Возникли ошибки при загрузке файла'
                } 
            }else{ 
                echo 
    'Размер файла превышает '.$maxsize.' килобайт'
            } 
        }else{ 
            echo 
    'Тип файла не входит в состав разрешённых<br/>Разрешённые типы файлов: '.$types
        } 

    ?> 
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data"> 
    <input name="filename" type="file" /><br /> 
    <input type="submit" value="Загрузить" /> 
    </form>