Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Проверка на тип загружаемого файла. |

04.02.2007, 16:00
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
Проверка на тип загружаемого файла.
Решил добавить на свой сайт форму для того что бы пользователи могли загружать свои обои. Потом они естественно будут проходить модерацию, но не это важно. Меня интересуют способы запрета заливки левых файлов типа .php .phtml и т.п. Сейчас вот у меня есть такой код:
PHP код:
if (substr($_FILES['filename']['type'],0,5) == 'image')
{ move_uploaded_file($_FILES['filename']['tmp_name'], "/img/wall".$name_image."");
}
else
{ echo "Разрешена загрузка только изображений";
}
Короче мне нужно что бы была возможность загружать только картинки. Что думаете насчет этого кода? Безопасен ли он? Можно ли его использовать в таких целях?
Пока писал этот текст в голову пришла одна мысль, а что если загружать все картинки в один каталог, в котором будет эштеаццесс в котором будет прописано что бы все файлы в этом каталоге обрабатывались как картинки. Возможно ли так сделать? И опять же безопасность этого способа. И какие способы вы можете предложить? Интересны любые идеи по этой теме.
|
|
|

04.02.2007, 16:19
|
|
AMA - Level 2
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
На счет безопасности такого способа ничего скачать не могу, но когда я делал подобный скрипт, то проверял загружаемые файлы по расширению(последние 4 символа должны были быть .jpg).
|
|
|

04.02.2007, 16:22
|
|
Участник форума
Регистрация: 05.09.2006
Сообщений: 187
Провел на форуме: 6860213
Репутация:
378
|
|
я б через .хтаццесс сделал
в папку хтацесс с
AddType image/jpeg .php .php3 .phtml
|
|
|

04.02.2007, 16:22
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
Я тоже так думал, но разницы не вижу особой. Хотя хз...
|
|
|

04.02.2007, 16:26
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2InferNo23 (((((((((((((((((((((((( ты же хакер!!!!((((((
2blaga ((((((((((((((((((((((((((((( ты же хакер!!!!(((((((
|
|
|

04.02.2007, 16:28
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Самый верный способ - натравить getimagesize или exif_imagetype на полученную картинку - если матюгнутся, знач подстава, нет - все в порядке, можешь копировать.
Кстати, последняя предпочтительней - работает быстрее и не матерится а тихо возвращает false
array getimagesize ( string filename [, array imageinfo])
The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP or IFF image file and return the dimensions along with the file type and a height/width text string to be used inside a normal HTML IMG tag.
Returns an array with 4 elements. Index 0 contains the width of the image in pixels. Index 1 contains the height. Index 2 a flag indicating the type of the image. 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order, 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF. These values correspond to the IMAGETYPE constants that were added in PHP 4.3. Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.
int|false exif_imagetype ( string filename)
exif_imagetype() reads the first bytes of an image and checks its signature. When a correct signature is found a constant will be returned otherwise the return value is FALSE. The return value is the same value that getimagesize() returns in index 2 but this function is much faster.
The following constants are defined: 1 = IMAGETYPE_GIF, 2 = IMAGETYPE_JPG, 3 = IMAGETYPE_PNG, 4 = IMAGETYPE_SWF, 5 = IMAGETYPE_PSD, 6 = IMAGETYPE_BMP, 7 = IMAGETYPE_TIFF_II (intel byte order), 8 = IMAGETYPE_TIFF_MM (motorola byte order), 9 = IMAGETYPE_JPC, 10 = IMAGETYPE_JP2, 11 = IMAGETYPE_JPX, 12 = IMAGETYPE_SWC.
|
|
|

04.02.2007, 16:30
|
|
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
Провел на форуме: 2976185
Репутация:
694
|
|
2ZaCo, зато ты chinga-chguk.
|
|
|

04.02.2007, 16:38
|
|
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме: 4610226
Репутация:
1332
|
|
2Helios ты совсем дурачок? головка бобо?
2blaga а ты хакер.
|
|
|

04.02.2007, 16:45
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
2ZaCo
А те только б пофлеймить?
Есть что-то конструктивное - пиши, а нету - не засоряй тему
|
|
|

04.02.2007, 16:45
|
|
Познавший АНТИЧАТ
Регистрация: 09.06.2006
Сообщений: 1,359
Провел на форуме: 5301021
Репутация:
1879
|
|
На мой взляд: полная фильтрация имени файла на его расширения. Да и .htaccess с
Код:
RemoveType .php .pl .php5 .php4 .php3 .phtml .cgi
самое то.
Можно и на кол-во расширений тоже проверять можно...
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|