[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: безопасный $GLOBALS["HTTP_RAW_POST_DATA"]
John Cena
доброе время суток. есть флеш-приложение, которое отправляет на сервер картинку в байт-массиве и хедер "Content-type" -"application/octet-stream".

на сервере все сохраняется так:

$file = fopen($name.'.png', "wb") or die("res=error");
fwrite($file, $GLOBALS["HTTP_RAW_POST_DATA"]);


подскажите каким образом можно:

1 проверить размер $GLOBALS["HTTP_RAW_POST_DATA"], дабы никто не пытался загрузить на сервер что-то огромное (в средняем вес картинки около 100 кб)

2 проверить, что бы это была картинка, а не какой-нибудь шел, или еще что-то, что может навредит...

заранее спасибо за ответы!



Спустя 47 минут, 28 секунд (29.07.2011 - 16:35) killer8080 написал(а):
Цитата (John Cena @ 29.07.2011 - 15:48)
1 проверить размер $GLOBALS["HTTP_RAW_POST_DATA"], дабы никто не пытался загрузить на сервер что-то огромное (в средняем вес картинки около 100 кб)

в php.ini есть ограничение на размер загружаемых через пост данных
upload_max_filesize и post_max_size
а вообще размер в байтах
$size = strlen($GLOBALS["HTTP_RAW_POST_DATA"]);

Цитата (John Cena @ 29.07.2011 - 15:48)
2 проверить, что бы это была картинка, а не какой-нибудь шел, или еще что-то, что может навредит...
для этого есть функция getimagesize(), но она работает с файлами.
А что массив $_FILES пуст?

Спустя 38 минут, 33 секунды (29.07.2011 - 17:14) John Cena написал(а):
да, короче долго объяснять в чем там прикол, но единственный способ которым я могу отправить на сервер эту картинку - это только байт-массив...

есть еще второй вариант - это закодировать этот байт-массив в json, но я не уверен в таком решении задачи так как боюсь что этот байт-массив сильно вырастет в размере...

Спустя 24 минуты, 22 секунды (29.07.2011 - 17:38) killer8080 написал(а):
Цитата (John Cena @ 29.07.2011 - 17:14)
да, короче долго объяснять в чем там прикол, но единственный способ которым я могу отправить на сервер эту картинку - это только байт-массив...

я так понял речь идёт о флешовом загрузчике? Тогда советую не изобретать велосипед, а применить swfupload
Цитата (John Cena @ 29.07.2011 - 17:14)
есть еще второй вариант - это закодировать этот байт-массив в json, но я не уверен в таком решении задачи так как боюсь что этот байт-массив сильно вырастет в размере...

не понял причём тут json blink.gif нужно просто корректно отправлять файл через post.

Спустя 3 часа, 9 минут, 10 секунд (29.07.2011 - 20:48) John Cena написал(а):
нет. флеш-загрузчик, это то что меня ждет впереди)
а сейчас у меня что-то типа рисовалки в контакте, и вот она отправляет такую фигню на сервер и я боюсь, что кто-то может послать туда свои байт-массивы в которых может быть все что угодно... и поэтому я щас ломаю голову как себя обезопасить от всякого рода гадов, которые будут лезть туда, куда не надо

Спустя 56 минут, 42 секунды (29.07.2011 - 21:44) killer8080 написал(а):
Цитата (John Cena @ 29.07.2011 - 20:48)
я боюсь, что кто-то может послать туда свои байт-массивы в которых может быть все что угодно... и поэтому я щас ломаю голову как себя обезопасить от всякого рода гадов, которые будут лезть туда, куда не надо

ну шел таким путём залить не получиться, файл ведь будет сохранён с расширением png, но действительно файлы проверять нужно, например так

$img = getimagesize($name.'.png');
if(substr($img['mime'], 0, 5) != 'image'){
unlink($name.'.png');
}

Спустя 21 час, 37 минут, 28 секунд (30.07.2011 - 19:22) John Cena написал(а):
понял, спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.