Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Curl и функция curl_getinfo();

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Надежность полученной информации при использовании curl_getinfo()
PlayTime
Отправлено: 24 Февраля, 2013 - 22:11:15
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Здравствуйте. Есть такая функция:
PHP:
скопировать код в буфер обмена
  1.  
  2. function get_url_info($url){
  3.     $ch = curl_init($url);
  4.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  5.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  6.     curl_setopt($ch, CURLOPT_HEADER, 1);
  7.     curl_setopt($ch, CURLOPT_NOBODY, 1);
  8.     curl_exec($ch);
  9.     if(!curl_errno($ch)) {
  10.         $info = curl_getinfo($ch);
  11.     } else {
  12.         $info =  curl_errno($ch);
  13.     }
  14.    
  15.     return $info;
  16. }
  17.  
  18. $fileinfo = get_url_info($url);
  19.  


Дальше в скрипте я работаю с полученными данными.
Интересует вопрос. Может ли злоумышленник изменить информацию о файле которую получает сервер?

Например есть проверка размера файла до начала загрузки:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($fileinfo['download_content_length'] > MAX_FILE_SIZE){
  3.         echo '<div class="alert alert-error"><strond>Максимальный размер файла '.MAX_FILE_SIZE.'.<br />Размер загружаемого файла'.$fileinfo['download_content_length'].'</strong><br />'.$url.'</div>';
  4.         continue;
  5. }
  6.  


Может ли размер полученный при помощи CURL отличатся от размера полученным функцией filesize() после загрузки файла на сервер?

Или нужно для уверенности сделать еще одну проверку после скачивания файла?
PHP:
скопировать код в буфер обмена
  1.  
  2. if(filesize($file) > MAX_FILE_SIZE){
  3.         echo '<div class="alert alert-error"><strond>Максимальный размер файла '.MAX_FILE_SIZE.'.<br />Размер загружаемого файла'.filesize($file).'</strong><br />'.$url.'</div>';
  4.         continue;
  5. }
  6.  

(Отредактировано автором: 25 Февраля, 2013 - 00:54:41)

 
 Top
Мелкий Супермодератор
Отправлено: 25 Февраля, 2013 - 08:39:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




На сколько знаю, download_content_length - считает сам curl, т.е. данным можно доверять. Но возможно, это вместе с заголовками - небольшое различие с действительным размером файла.
Ну от паранойи умирают редко, так что можно и перепроверить ещё раз.


-----
PostgreSQL DBA
 
 Top
PlayTime
Отправлено: 25 Февраля, 2013 - 14:43:54
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Мелкий пишет:
Ну от паранойи умирают редко, так что можно и перепроверить ещё раз.


Я так и сделал. Проверил еще раз mime тип полученный функцией getimagesize() а также размер файла.
Но с размером файла все таки есть еще одна проблема. Посмотрю. работают ли на скачивание файлов при помощи CURL ограничение размера максимального загружаемого файла в PHP.

Возможно даже если в данных которые передал CURL будет ошибка и файл окажется больше, PHP просто вылетит с ошибкой и все. Но это я сегодня проверю. И что будет с не полными файлами в случае ошибки загрузки файлами.

P.S хотел привести в пример фразу. Но потом увидел что она у Вас в подписи. Так как я не знаю хорошо как работает CURL, по этому нужно удостоверится что все будет так как я ожидаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB