2013-05-20 3 views
0

У меня есть сайт для загрузки изображений. Кто-то загружает файлы shells. Мои валидации: - Проверить файл mime (только изображения в режиме реального времени) - Проверить, не возвращает ли getimagesize возвращаемый массив (is_array) Если нет, ошибка. И все же, кто-то загружает файлы shells. Пожалуйста помоги. Thnkas много!Предотвращение загрузки файлов оболочки. php

Маленькая проверка:

$ext = ($_FILES['files']['type']); 

if (($ext != "image/jpeg") && ($ext != "image/pjpeg") && ($ext !="image/png") && ($ext != "image/gif") && ($ext != "image/bmp") && ($ext != "image/x-icon") && (!is_array(getimagesize($_FILES['files']['tmp_name'])))) { 

    // Show error 
} else { 
    // Keep upload... 
} 
+1

Предоставить код –

+1

Помимо того, что кто-то может загружать снаряды, мне интересно, как они ими управляют. Вы позволяете людям загружать файлы в общедоступном месте? – PeeHaa

+0

Не могли бы вы показать нам свой код? – Max

ответ

1

Вы должны проверить файлы разрешений, то не должны исполняться PHP. Легко хранить данные в матрице растровых данных изображения (очевидно).

Посмотрите на этих невинных медуз:

Innocent jellyfishes

Stackoverflow превращают мою невинную .BMP в .PNG

Оригинальный .bmp можно найти на a friend's server. Если вы посмотрите в нижнем левом углу, вы увидите странные пиксели, соответствующие данным ascii, записанным в данных пикселя.

Чтобы избежать файлов оболочки, вы должны применить модификацию, которая будет немного изменять каждый пиксель изображений.

Для меня конверсия (сжатие) кажется хорошим началом.

Удачи вам!

+0

Ха-ха. То же самое я сделал некоторое время назад. Только то, что я использовал gif, поскольку первые несколько байтов gif являются текстовыми и не вызывают большой проблемы со сценариями. – iWantSimpleLife

+0

Как мне это сделать? – user2400053

Смежные вопросы