Привет мастера.
Помогите разобраться, как нужно фильтровать загруженные файлы?
Я знаю только то что можно сверять тип файлов. Например при загрузке картинки, если тип не равен jpg, png то не сохранять на сервере её.
Но я понимаю что скорее всего это можно обойти, поэтому хочу спросить у вас, как же вы все-таки пишите фильтрацию файлов?
<?
/* Тип файлов которые можно загружать */
$filetype = array ( 'jpg', 'gif', 'png', 'jpeg', '3gp', 'mp4', 'mp3', 'flv', 'zip', 'rar' );
$upfiletype = substr($_FILES['filename']['name'], strrpos( $_FILES['filename']['name'], "."+1);
/* Если тип файла не подходит */
if(!in_array($upfiletype,$filetype)) {
echo '<div class="array">Такой формат запрещено загружать!</div>';
require_once ('../core/foot.php');
exit();
}
?>
да, а этого достаточно? Его можно как-то подменить?
Ты проверяй и мем тип, и формат файла. Если уж и подменят, то сайту не навредят.
Кидорас, спасибо)
А еще слышал, что можно загрузить шелл, который выглядит как картинка, и имеет формат картинки, такое возможно?
P.S. Не могу ставить плюсы в репу
С этим я не сталкивался. Можно проверять содержимое файла регуляркой, на поиск eval, fopen, include... Но это зашквар. Отключить через штакетник запуск скриптов в директории, и уже ничего не случится.