- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
public function is_image($mime) {
//Функция проверяет по mime типу является ли поступивший файл изображением
$images_mime = array('image/jpeg','image/pjpeg','image/png','image/cgm','image/fits','image/g3fax',
'image/gif','image/ief','image/jp2','image/jpm','image/jpx','image/naplps',
'image/prs.btif','image/prs.pti','image/t38','image/tiff','image/tiff-fx',
'image/vnd.adobe.photoshop','image/vnd.cns.inf2','image/vnd.djvu','image/vnd.dwg',
'image/vnd.dxf','image/vnd.fastbidsheet','image/vnd.fpx','image/vnd.fst',
'image/vnd.fujixerox.edmics-mmr','image/vnd.fujixerox.edmics-rlc','image/vnd.globalgraphics.pgb',
'image/vnd.microsoft.icon','image/vnd.mix','image/vnd.ms-modi','image/vnd.net-fpx',
'image/vnd.sealed.png','image/vnd.sealedmedia.softseal.gif','image/vnd.sealedmedia.softseal.jpg',
'image/vnd.svf','image/vnd.wap.wbmp','image/vnd.xiff');
if(!in_array($mime,$images_mime)) {
//Не было найдено совпадений mime типа - это не картинка
return false;
}
else {
//Было найдено совпадение mime типа
return true;
}
}
mrbig66 10.03.2010 16:37 # +2
Subsanek 10.03.2010 16:45 # 0
Потом через GD напишу уменьшение размера.
guest 10.03.2010 16:47 # 0
Subsanek 10.03.2010 16:52 # +1
Функция кстати нормально работает и закрыла критическую уязвимость в проекте.
murz 10.03.2010 17:44 # +4
Т.е., если я буду отправлять файл сам и подставлю mime как у картинки, то я смогу загрузить любой файл.
Subsanek 10.03.2010 17:48 # 0
murz 10.03.2010 17:50 # 0
Subsanek 10.03.2010 18:00 # −2
murz 10.03.2010 18:06 # 0
Subsanek 10.03.2010 18:09 # 0
P.S в проекте загрузка картинок только в админском разделе происходит.
Так что думаю это не так уязвимо будет, но все же интересно как бороться с этим?
murz 10.03.2010 18:13 # 0
guest 10.03.2010 18:13 # +2
guest 10.03.2010 19:00 # 0
guest 11.03.2010 11:54 # 0
rakoth3d 11.03.2010 03:12 # +2
Subsanek 11.03.2010 13:00 # 0
Все потом.
mrbig66 11.03.2010 09:25 # +3
ЗЫ проверка Mime это скорее не преграда от хакера, а просто ограничение. Мало ли человек нечаянно начнет bmp загружать или tiff (если это не входит в проект).
guest 10.03.2010 17:33 # +1
Если понаглеть, то :
/* 1 */ $images_mime = array('jpeg','pjpeg'....); // меньше пхать в память
/* 2 */ return (!in_array('image/'.$mime,$images_mime))
Subsanek 10.03.2010 17:49 # 0
Subsanek 10.03.2010 17:54 # 0
guest 10.03.2010 18:11 # 0
$images_mime верни как было, просто
return (!in_array($mime,$images_mime))
PS - почитай про ф-цию exif_imagetype()
^_^
guest 10.03.2010 18:10 # 0
Subsanek 11.03.2010 13:40 # 0
А то я что-то жирно написал, на производительность влиляло бы плохо.
Subsanek 10.03.2010 19:58 # 0
guest 10.03.2010 23:30 # 0
Subsanek 11.03.2010 07:18 # 0
guest 11.03.2010 09:11 # 0
Subsanek 11.03.2010 12:19 # 0
Я так например делаю.