Upload файлов, безопасность

Печать RSS
203


2000 лет д.н.э.
0
.::lugaro::.функция mime_content_type определяет по расширению файла, так что смысла нет
интересно как тогда у меня определяет тип если файлы хранятся без расширений?)))
N

Эцилопп сией тентуры
0
delete не так понял гг
Изменил: Nu3oN (04.08.2010 / 23:53)
N

Эцилопп сией тентуры
0
Я делаю типа как лугаро сказал! только пишу типа такого: при создании категории создаю "Массив" в который указываю допустимые для этой категории расширения, потом при заливке файла, сохраняю файл с таким именем time().rand(111,999).'.'.$format; ранд на тот случай, если вдруг 2 пользователя, решат одновременно залить файл! случай один на миллион, но все же шанс есть! и на всякий случай запрещаю работу php! и потом просто выдаю файл скриптом!
Изменил: Nu3oN (05.08.2010 / 00:03)

ツ ツ ツ
0
21. ramzes, То что она работает по расширению я ошибся, но сама функция работает не везде http://wapnew.ru/test.php
Да и мим она будет узнавать по нескольким символам в начале файла "GIF89a" берешь просто рнр код в конец пишешь, а содержимое всего файла она не будет анализировать, следственно проверка мима при загрузки это лишняя трата времени, достаточно будет расширения
Изменил: Lugaro (05.08.2010 / 00:06)

ツ ツ ツ
0
CHUMA (4 Августа 2010 / 21:41)
Это не подойдет. Мне чем проще тем лучше. Это же WAP-ENGINE. Плюс на файлах. Плюс загруз центр уже нормально отлажен. Переделывать не хочется. Поэтому думаю по расширению проверку сделаю и по $_FILES['file']['type']

А насколько это точная информация, что можно подменить мим тип? Можете как то показать на практике?
Мим при загрузке передается браузером в заголовках, любые заголовки можно подменить
POST /up/?mod=upload HTTP/1.1
Host: test1.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11 WebMoney Advisor
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://test1.ru/up/?mod=upload
Cookie: SID=05f32e96f02324ec4f8b301ba0cce532
Content-Type: multipart/form-data; boundary=---------------------------41184676334
Content-Length: 8453
-----------------------------41184676334
Content-Disposition: form-data; name="file"; filename="30.jpg"
Content-Type: image/jpeg
Изменил: Lugaro (05.08.2010 / 00:15)
Автор
Пацак
0
Спасибо огромное, очень много чего нового нашел для себя. Будем искать еще способы smile
А пока погоняю функцию mime_content_type при разных условиях smile
Автор
Пацак
0
Из инета я еще узнал, что определение мимов функцией mime_content_type из PHP 5.3.0 удалили.
Mimetype extensions has been removed from PHP 5.3.0
Так что похоже она уже не актуальна. Буду фильтровать расширения.
Автор
Пацак
0
Вот еще кое что узнал. Теперь сто процентов уверен что $_FILES['file']['type'] это браузер передает тип файла, и он как раз и зависит от расширения. Так что не смысла его проверять. Такими же темпами можно и расширения фильтровать.

2000 лет д.н.э.
0
if(preg_match('/[a-z0-9\-\(\)\[\]]+\.(zip|rar|mp3|jpg|png|gif|jar|sis)$/i', $file)){
можно и так...
Автор
Пацак
0
Вот как сделал я:
<?php
$pinfo = pathinfo($_FILES['uploaded_file']['name']);
$ext = strtolower($pinfo['extension']);
$chek_ext = array('jpg', 'jpe', 'jpeg', 'gif', 'png', 'bmp', 'wbmp', 'mbm', 'tiff', 'mp3', 'mmf', 'imy', 'midi', 'mid', 'aac', 'amr', 'wav', 'wma', 'mp4', '3gp', 'mpeg', 'mpg', 'mpe', 'mov', 'avi', 'wmv', 'asf', 'dat', 'jar', 'jad', 'zip', '7z', 'rar', 'tar', 'gz', 'tgz', 'bz', 'bz2', 'sis', 'sisx', 'cab', 'app', 'txt', 'nth', 'thm', 'chm', 'mms', 'doc', 'pdf');
if(!in_array($ext, $chek_ext))
 {
  echo'<p class="err">Ошибка!!! Вы загружаете запрещенный тип файла.</p>';
 }
?>
Изменил: Владимир (05.08.2010 / 12:25)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск