Перейти к содержимому



Загрузка нескольких файлов на сервер одновременно

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 07 Октябрь 2010 - 14:12

мультизагрузка

<?php
$uploaddir = '../../media/original/';
for ($i=0; $i<count($_FILES['photo']['name']); $i++)
{
if ($_FILES['photo']['error'][$i] == 0)
{
$uploadfile = $uploaddir . $_FILES['photo']['name'][$i];
$type = getimagesize($_FILES['photo']['tmp_name'][$i]);
if ($type[2] == 1 || $type[2] == 2 || $type[2] == 3 )
{
if (move_uploaded_file($_FILES['photo']['tmp_name'][$i], $uploadfile))
{
echo "Файл успешно загружен.<br />";
}
else
{
echo "<span class=\"error\">1Файл не был загружен на сервер.</span><br />";
}
}
else
{
echo "<span class=\"error\">2Файл не является изображением.</span><br />";
}
}
else
{
echo "<span class=\"error\">3Файл не был загружен на сервер.</span><br />";
}
}
?>


как добавить проверку на пустые поля и удаление их из массива?
Как тут проверять расширение?
Какие тут могут быть атаки, и как защититься от них?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 09 Октябрь 2010 - 01:09

sc2r2bey,

как добавить проверку на пустые поля и удаление их из массива?

По-моему я использовал is_uploaded_file()

Как тут проверять расширение?

Если работаешь точно с картинками, нужно проверять не расширение а MIME-тип. Проверяется всё очень просто.
В цикле вытаскиваем Mime текущей перебираемой картинки и сравниваем, встречается ли такой MIME в массиве разрешенных. Если да, то пропускаем, если нет, то удаляем файл + выдаём ошибку в несоответствии.

Какие тут могут быть атаки, и как защититься от них?

1) Загрузка исполняемых файлов с двойным расширением - решение - сверка MIME + проверка последнего расширения на соответствие.
2) Загрузка недопустимо больших файлов - проверяем настройки PHP и если что предупреждаем
3) Пропуск файла(пусто) в одном из полей мультизагрузки для выявления ошибок в работе и дыр в скрипте - решение - делаем тщательную проверку каждого загруженного файла на его наличие

Более надо продумывать, всё ято надумал пока что :)
  • 0


Оформление форума – IPBSkins.ru