|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
Проверка типов загружаемых файлов.21.02.2012, 15:03. Показов 36606. Ответов 12
Метки нет (Все метки)
В общем нужно загрузить 3-4 файла быть. Могут быть ['png', 'jpg', 'jpeg', 'doc', 'excel', 'pdf'] (проверка на js есть), далее нужно проверять на стороне сервера. Проверок на картинки много, ресайзы там и всё такое, а вот как быть с остальным? Или их достаточно ещё раз проверить на тип и майм?
0
|
|
| 21.02.2012, 15:03 | |
|
Ответы с готовыми решениями:
12
Проверка загружаемых файлов Сосчитать количеств загружаемых файлов Изменить формат загружаемых файлов |
|
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
|
|
| 21.02.2012, 15:30 | |
|
не совсем понял, вам нужно проверить файлы на расширение?
Если да, то создайте массив с разрешенными расширениями и проверьте расширение у загружаемого файла (думаю миме-тип тоже можно проверить, я читал, что под картинкой может скрываться все что угодно, бацила какая-нибудь), а дальше просто проверь есть ли в массиве разрешенных массивов то значение, которое загрузили
0
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
| 21.02.2012, 16:14 [ТС] | |
|
ну так вот и я о том же, в гиф сам не раз пихал пыху и троллил админов. Вот и спрашиваю, что лучше всего делать.
0
|
|
|
25 / 25 / 3
Регистрация: 26.01.2012
Сообщений: 54
|
|
| 21.02.2012, 16:26 | |
|
Проверки расширения недостаточно. Файл можно и переименовать.
Сам недавно писал проверку типа файла. Есть несколько способов. Во-первых, в массиве $_FILES есть элемент type, хранящий mime-тип загруженного файла. Но его определяет браузер и, как я читал, не всегда получается. Также есть одна "замечательная" особенность у всеми нами любимого IE (старых версий). У него даже свои mime-типы для некоторых изображений!!! Так, вместо привычного image/jpeg у него - image/pjpeg. Вместо image/png - image/x-png. И только gif почему-то неизменен). Я бы на эту проверку полностью не полагался.Дальше, есть функция getimagesize(), которая кроме определения размеров изображения возвращает ещё и его тип. Есть ещё функция mime_content_type(), но она вроде бы устаревшая и на некоторых (каких и с какой версии - не знаю)версиях php отсутствует. Есть ещё какие-то расширения, но я ими не пользовался и сказать ничего по ним не могу.
1
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
| 21.02.2012, 17:12 [ТС] | |
|
getimagesize и $_Files[type] я уже нагуглил, а вот про текстовые так сказать?
0
|
|
|
25 / 25 / 3
Регистрация: 26.01.2012
Сообщений: 54
|
|
| 21.02.2012, 17:38 | |
|
А $_Files[type] не подойдёт? Хотя, как я говорил уже, я бы не доверял ему полностью.
Вот ещё нашёл, но сам не пробовал: http://www.php.ru/manual/function.finfo-file.html
1
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
| 22.02.2012, 13:28 [ТС] | |
|
Ну я делаю одну функцию из нескольких ифов, которые в случаи успеха (тоесть файл прохой) возвращают false, если ифы не сработыли, то идёт тру. В функции максимально всех проверок ставл. Filetype не очень помог, ибо открыв редактором текста тот же bmp и вписав к примеру код шела он загружается, а если есть какая-то sql уязвимость или же появится в будущем функция переименовывания файлов или ещё бог его знат что, то шел аплодицо без проблем.
0
|
|
|
239 / 236 / 43
Регистрация: 16.03.2011
Сообщений: 750
|
|
| 22.02.2012, 14:04 | |
|
Можно файл и затем по пиксельно записать в новый файл, например если в файл будет добавлена сигнатура вируса то при загрузке странице страница будет заблокировано как вредоносная))) если файл заново создать то всё будет норма.
Пример откроем в hex редакторе любую картинку на месте 00h пишем любой текст это не испортит картинку,но картинка будет содержать нечто пока её заново не перезапишут.
0
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|||||||||||
| 22.02.2012, 15:01 [ТС] | |||||||||||
|
ну я вот один из способов сделал, но не знаю правильно ли его использовать
Добавлено через 1 минуту да, в массиве $file_types храницо jpg,jpeg,png, ибо по мимо картинок ещё ексель, док и пдф с csv, но думаю из них никак не подгрузить php, да и даже если их подгрузишь, не особо есть как ещё проверить. Добавлено через 6 минут Ну а вообще у меня получилась такая функция
0
|
|||||||||||
|
25 / 25 / 3
Регистрация: 26.01.2012
Сообщений: 54
|
|
| 22.02.2012, 15:18 | |
|
Ещё, я писал про то, что значение type в массиве $_FILES задаётся браузером и хз, на 100 ли процентов гарантируется корректность и правильность данного значения.
Также, что важно, выше я писал про любимый IE, у которого, как оказалось, свои некоторые mime-типы.
0
|
|
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
||
| 22.02.2012, 15:45 [ТС] | ||
|
0
|
||
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
| 23.02.2012, 00:58 [ТС] | |
|
В общем-то как оказалось, mime бессмысленные в большинстве случаем, ибо только в тех, на что у меня хватило нервов проверить, уже косячились по разному, хотя в большинстве случаев ок...
На данный момент что име: формальная проверка по типу, проверка картинки на размеры+запрет на выполнение через htaccess. Так же посоветовали проверять файлы побайтово, тоесть читать n-количество байт и сравнивать верными этого типа, но на токое ума у меня пока не хватает, может кто подскажет?
1
|
|
|
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
|
||||||
| 23.02.2012, 18:29 | ||||||
|
у меня вот залежался кусок кода доставшийся мне от одного программиста, я им не пользуюсь, но думаю те пригодится
0
|
||||||
| 23.02.2012, 18:29 | |
|
Помогаю со студенческими работами здесь
13
Отправка почты БЕЗ проверки загружаемых файлов Имена загружаемых файлов Ограничение на количество загружаемых файлов в php.ini и ошибка типа Warning Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|