Безопасный аплоад

Print RSS
136

С
Author
Малиновые штаны
0
Дайте пожалуйста код безопасного аплоада файлов (чтобы проверялись расширения файлов которые можно грузить,резалась загрузка файлов с двойным расширением и всякая гадость). Или укажите где глянуть ) что бы было на 99.9% безопасно.С меня +
О

Землянин
0
$_FILES['file']['type'] возвращает тип файла. Делай проверку по нему. Приложения mime-типов можешь тут посмотреть http://www.spravkaweb.ru/php/pril/mime.
По двойному расширению проверять это не выход.
Саму загрузку следует реализовать так
<?
if(is_uploaded_file($_FILES['file']['tmp_name']))
 {
     move_uploaded_file($_FILES['file']['tmp_name'],$_SERVER['DOCUMENT_ROOT']."/files/".$filename);
 }
?>
Changed: Lugaro (30.12.2009 / 02:54)

2000 лет д.н.э.
0
<?php
$legalext = array('rar','zip','jar','mp3');
$ext = explode('.',$_FILES['userfile']['name']);
$ext = strtolower($ext[count($ext)-1]);
if(preg_match('|^[a-z0-9\_\.\-\(\)]+$|i',$_FILES['userfile']['name']) AND in_array($ext,$legalext)){
$savename = str_ireplace('.'.$ext,'',$_FILES['userfile']['name']);
$savename = str_replace('.','_',$_FILES['userfile']['name']);
$savename = $savename'._'.mt_rand(111,999).'.'.$ext;
//сохраняем с именем $savename
}else{ echo'error bad name or extension file'; }
если где ошибка, сильно не бить, я 5 минут назад проснулсяsmile

Чатланин
0
$ext = pathinfo($file, PATHINFO_EXTENSION); // расширение файла
$array = array('zip','rar'); //допустимые расширения
if(in_array($ext, $array))
{
exit('error');
}

Чатланин
0
1. sanzstez, грузишь в каталоги, в которых запрещено выполнение php и не переживаешь за фильтры D
С
Author
Малиновые штаны
0
Всем пасиб )) скину + кому смогу.
С
Author
Малиновые штаны
0
А если грузить только картинку (gif,jpg)
Хватит ли только такой проверки :
GetImageSize($_FILES['file']['tmp_name']); ?
т.е если не будет доступа к картинке (если это не картинка) то возвращается NULL и мы выдаем ПНХ. Норм или еще дополнительно что-то добавить надо?
О

Землянин
0
GetImageSize возвращает помимо прочего возвращает тип, по нему и проверяй. Тоесть для jpeg - image/jpeg, для gif - image/gif. Вот и проверяй какой тип возвращает функция
Stickers / Tags / Rules / Top topics / Top Posts / Search