Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CURL: загрузка файлов и безопасность 
:(
    Опции темы
PROme2
Дата 9.7.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



снова я с вопросами безопасности smile
цель - закачка картинки, урл которой вводит юзер
какие тут могут быть опасности, как фильтровать инфу?
пока я что делаю:
- проверяю, не длиннее ли строка 255 символов
- начинается ли она с 'http://'
- содержит ли 'file:'
что нужно еще сделать? smile 
PM MAIL   Вверх
ksnk
Дата 9.7.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



а зачем? Нужно скачать и проверить mime-type и размер. Размер проще проверять fopen'ом. Скачать 20, к примеру, кил и остановится. Если файл недокачался и/или некорректен - минус в репу юзеру smile
Цитата(PROme2 @  9.7.2007,  16:35 Найти цитируемый пост)
- проверяю, не длиннее ли строка 255 символов
 Строка GET'а может быть существенно больше...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
PROme2
Дата 9.7.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



Цитата(ksnk @  9.7.2007,  16:44 Найти цитируемый пост)
Нужно скачать и проверить mime-type и размер.

это само собой
просто проверять может быть уже поздно smile 
и не такое бывает... так что хочу максимально перестраховаться еще до скачки

Цитата(ksnk @  9.7.2007,  16:44 Найти цитируемый пост)
Скачать 20, к примеру, кил и остановится. Если файл недокачался и/или некорректен - минус в репу юзеру

а смысл? непонятно что-то, подробней можно?

Цитата(ksnk @  9.7.2007,  16:44 Найти цитируемый пост)
Строка GET'а может быть существенно больше...

опыт показывает, что ничего хорошего за этим скрываться не будет smile
PM MAIL   Вверх
ksnk
Дата 9.7.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(PROme2 @  9.7.2007,  17:13 Найти цитируемый пост)
а смысл? непонятно что-то, подробней можно?
 Юзер может заказать скачку очень большого файла... Кино, какое-нибудь, лечись потом...
Цитата(PROme2 @  9.7.2007,  17:13 Найти цитируемый пост)
опыт показывает, что ничего хорошего за этим скрываться не будет
 В принципе - да. smile для "собственного употребления" - вполне подойдет. А вот если юзер просто бросит ссылку на понравившуюся картинку копи-пейстом, может и не хватить...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
lorien
Дата 9.7.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Цитата

пока я что делаю:
- проверяю, не длиннее ли строка 255 символов

На БД, что ли, экономите? )
Цитата

- начинается ли она с 'http://'

Есть ещё и ftp:// и https://
Цитата

- содержит ли 'file:'

Чего-чего содержит?

Вот вам алгоритм: делаете HEAD запрос, смотрите размер и mime-type. Если всё ок, делаете GET запрос.
Если вы параноик, то не надеетесь на данные HEAD запроса и проверяете, что размер реальных данных таки не превывышает лимит.
Всё это удобно делать с помощью библиотеки curl, вернее её модуля для python.
PM WWW   Вверх
PROme2
Дата 9.7.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 4.1.2006

Репутация: нет
Всего: нет



Цитата(ksnk @  9.7.2007,  17:50 Найти цитируемый пост)
Юзер может заказать скачку очень большого файла... Кино, какое-нибудь, лечись потом...

CURLOPT_TIMEOUT в 15 секунд и все...
мне кажется так проще, я просто когда-то сталкивался с определением размера, уже точно не помню, но помню что были проблемы, не всегда размер удавалось узнать

Цитата(ksnk @  9.7.2007,  17:50 Найти цитируемый пост)
А вот если юзер просто бросит ссылку на понравившуюся картинку копи-пейстом, может и не хватить...

хватит, хватит... smile

Добавлено через 4 минуты и 53 секунды
Цитата(lorien @  9.7.2007,  18:05 Найти цитируемый пост)
На БД, что ли, экономите?

таких длинных урлов не будет, чтоб не было возможности всяких пакостей накалякать smile

Цитата(lorien @  9.7.2007,  18:05 Найти цитируемый пост)
Есть ещё и ftp:// и https://

в баню их...

Цитата(lorien @  9.7.2007,  18:05 Найти цитируемый пост)
Чего-чего содержит?

чтобы не прописывали локальные файлы


Цитата(lorien @  9.7.2007,  18:05 Найти цитируемый пост)
Вот вам алгоритм: делаете HEAD запрос, смотрите размер и mime-type. Если всё ок, делаете GET запрос.
Если вы параноик, то не надеетесь на данные HEAD запроса и проверяете, что размер реальных данных таки не превывышает лимит.

эта проверка делается не для поправок ошибок юзеров, а какраз для защиты от возможных взломов, так что на данные head полагаться точно не прийдется smile

Добавлено через 11 минут и 3 секунды
тут по соседству есть еще одна из моих тем smile
про header('location:...
впоследствие изучения вопроса всплыло много интересностей, в том числе и то, что при недостаточной обработке можно легко тырить куки юзеров и т.д.
так что не хотелось бы тут что-то подобное пропустить, меня волнует именно то, что можно (ли?) сделать именно специально сформированным урлом? все остальные вопросы, что там за инфа, ее объемы и т.д. меня не волнуют, это проверяется... важно именно чтобы само выполнение функции с урлом, полученным от юзера не стало дырой

Добавлено через 14 минут и 21 секунду
мда, я уже молчу про sql-инъекции, вставленные в имена файлов или php-код, интегрированный прямо в файл картинки... опасность повсюду smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1247 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.