Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: путь к файлу аргументом
 
 автор: moonfox   (12.02.2014 в 18:05)   письмо автору
 
 

скажите пожалуйста
нормально ли будет если передавать в функцию путь к файлу через аргумент?
то есть есть необходимость грузить файлы на сервак в разные папки в зависимости от потребностей
например пользователи грузять файлы
$db->upload('/userdata');
а админы в
$db->upload('/data');
etc.

  Ответить  
 
 автор: psychomc   (12.02.2014 в 18:09)   письмо автору
 
   для: moonfox   (12.02.2014 в 18:05)
 

да, только как правило используется абсолютный путь. разве есть другие варианты?

  Ответить  
 
 автор: moonfox   (12.02.2014 в 18:14)   письмо автору
 
   для: psychomc   (12.02.2014 в 18:09)
 

просто незнаю но почему то смущает...
вдруг есть гипотетическая уязвимость..

вы предлагает писать типа domen.com/uploads?
только вот проблема в том что для каждой копии движка
придется писать клиенту путь в аргументах или брать его из урла будет нормально?

  Ответить  
 
 автор: confirm   (12.02.2014 в 18:19)   письмо автору
 
   для: moonfox   (12.02.2014 в 18:14)
 

>вдруг есть гипотетическая уязвимость..

Если не проверять, то гипотетическая превращается в реальную, тем более если не дай бог пути задает пользователь.

  Ответить  
 
 автор: moonfox   (12.02.2014 в 18:22)   письмо автору
 
   для: confirm   (12.02.2014 в 18:19)
 

пути фиксированные в php файле

  Ответить  
 
 автор: psychomc   (12.02.2014 в 19:13)   письмо автору
 
   для: moonfox   (12.02.2014 в 18:14)
 

>вы предлагает писать типа domen.com/uploads?
нет, под абсолютным путем я подразумеваю путь к директории с сайтом на жестком диске сервера ($_SERVER['DOCUMENT_ROOT']). ничего из урла брать не надо, пути к конкретным папкам должны быть вписаны хардкодом на стороне сервера. никакой уязвимости нет, если проверять правильно тип файла и размер

  Ответить  
 
 автор: moonfox   (12.02.2014 в 19:36)   письмо автору
 
   для: psychomc   (12.02.2014 в 19:13)
 

про док рут спаасибо
не догадывался
а тип я проверяю по мими и ставлю расширение из него если выполняется условие что это картинка

  Ответить  
 
 автор: psychomc   (12.02.2014 в 20:09)   письмо автору
 
   для: moonfox   (12.02.2014 в 19:36)
 

есть много разных способов, иногда можно mime-тип определять на стороне php, для картинок удобно использовать getimagesize. если возвращает false, значит не картинка

  Ответить  
 
 автор: moonfox   (12.02.2014 в 20:28)   письмо автору
 
   для: psychomc   (12.02.2014 в 20:09)
 

хм... вообще нигде об таком подходе не читал.....
везде пишут что более менее приемлемо это определять мими и сохранять под новым именем и полученным расширением
то бишь есть даже искусственно отдать php с типом jpeg то этот файл выполнится только при условии что php обрабатывает изображения как свои. потому как будет на серваке php.jpg
спасибо за совет

  Ответить  
 
 автор: confirm   (13.02.2014 в 01:58)   письмо автору
 
   для: moonfox   (12.02.2014 в 20:28)
 

Да, серьезный у вас подход, у меня пути фиксированы, "мими" помогает....

Если вас будут атаковать в этом направлении, то не надейтесь на то, что пользоваться будут вашей формой. Если браузер отрезает путь и передает только имя файла на сервер, и ваша "фиксация" еще более менее служит задаче, то отправляя файл без вашей формы к его имени можно добавить любой путь. А ведь есть basename().

Тип файла изображения проверяется по заголовку, но РНР позволяет выполнить код после любых данных, если встретит после них свой тег, getimagesize() - это слабое утешение. Уж более лучше для изображений проверять if($im = imagecreatefromstring(upload)) { save $im }

Да и отправляя вам php-червяка, с чистой совестью отправят и "мими-текст".

Каталоги для загрузки нужно закрывать для исполнения любых скриптов.

В сети информации о безопасности много, почему бы не почитать на ночь.

  Ответить  
 
 автор: moonfox   (13.02.2014 в 02:22)   письмо автору
 
   для: confirm   (13.02.2014 в 01:58)
 

я говорю почитал
почитал на хабре
я понял что php можно отправить с любым заголовком
но я же говорю
файлу меняется расширение
изображения не обрабатыватся как скрипты
да и дописанные пути можно парсить и все .. / просто обрубать
но посмотрю basename еще спасибо.

и это
Options -Indexes
Options -ExecCGI -Indexes
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
RemoveType php
AddType application/x-httpd-php-source .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp


ну вот это все и рекомендуют
значит врут гады...

  Ответить  
 
 автор: confirm   (13.02.2014 в 02:45)   письмо автору
 
   для: moonfox   (13.02.2014 в 02:22)
 

Options -Indexes

php_flag engine 0
AddType "text/html" .php .cgi ...

RemoveType php

RemoveHandler .phtml .php ...
AddType application/x-httpd-php-source .phtml ...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования