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
Форумы портала PHP.SU :: Версия для печати :: Curl и функция curl_getinfo();
Форумы портала PHP.SU » » Работа с сетью » Curl и функция curl_getinfo();

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

1. PlayTime - 24 Февраля, 2013 - 22:11:15 - перейти к сообщению
Здравствуйте. Есть такая функция:
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.  
2. Мелкий - 25 Февраля, 2013 - 08:39:46 - перейти к сообщению
На сколько знаю, download_content_length - считает сам curl, т.е. данным можно доверять. Но возможно, это вместе с заголовками - небольшое различие с действительным размером файла.
Ну от паранойи умирают редко, так что можно и перепроверить ещё раз.
3. PlayTime - 25 Февраля, 2013 - 14:43:54 - перейти к сообщению
Мелкий пишет:
Ну от паранойи умирают редко, так что можно и перепроверить ещё раз.


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

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

P.S хотел привести в пример фразу. Но потом увидел что она у Вас в подписи. Так как я не знаю хорошо как работает CURL, по этому нужно удостоверится что все будет так как я ожидаю.

 

Powered by ExBB FM 1.0 RC1