|
|
|
| скажите пожалуйста
нормально ли будет если передавать в функцию путь к файлу через аргумент?
то есть есть необходимость грузить файлы на сервак в разные папки в зависимости от потребностей
например пользователи грузять файлы
$db->upload('/userdata');
а админы в
$db->upload('/data');
etc. | |
|
|
|
|
|
|
|
для: moonfox
(12.02.2014 в 18:05)
| | да, только как правило используется абсолютный путь. разве есть другие варианты? | |
|
|
|
|
|
|
|
для: psychomc
(12.02.2014 в 18:09)
| | просто незнаю но почему то смущает...
вдруг есть гипотетическая уязвимость..
вы предлагает писать типа domen.com/uploads?
только вот проблема в том что для каждой копии движка
придется писать клиенту путь в аргументах или брать его из урла будет нормально? | |
|
|
|
|
|
|
|
для: moonfox
(12.02.2014 в 18:14)
| | >вдруг есть гипотетическая уязвимость..
Если не проверять, то гипотетическая превращается в реальную, тем более если не дай бог пути задает пользователь. | |
|
|
|
|
|
|
|
для: confirm
(12.02.2014 в 18:19)
| | пути фиксированные в php файле | |
|
|
|
|
|
|
|
для: moonfox
(12.02.2014 в 18:14)
| | >вы предлагает писать типа domen.com/uploads?
нет, под абсолютным путем я подразумеваю путь к директории с сайтом на жестком диске сервера ($_SERVER['DOCUMENT_ROOT']). ничего из урла брать не надо, пути к конкретным папкам должны быть вписаны хардкодом на стороне сервера. никакой уязвимости нет, если проверять правильно тип файла и размер | |
|
|
|
|
|
|
|
для: psychomc
(12.02.2014 в 19:13)
| | про док рут спаасибо
не догадывался
а тип я проверяю по мими и ставлю расширение из него если выполняется условие что это картинка | |
|
|
|
|
|
|
|
для: moonfox
(12.02.2014 в 19:36)
| | есть много разных способов, иногда можно mime-тип определять на стороне php, для картинок удобно использовать getimagesize. если возвращает false, значит не картинка | |
|
|
|
|
|
|
|
для: psychomc
(12.02.2014 в 20:09)
| | хм... вообще нигде об таком подходе не читал.....
везде пишут что более менее приемлемо это определять мими и сохранять под новым именем и полученным расширением
то бишь есть даже искусственно отдать php с типом jpeg то этот файл выполнится только при условии что php обрабатывает изображения как свои. потому как будет на серваке php.jpg
спасибо за совет | |
|
|
|
|
|
|
|
для: moonfox
(12.02.2014 в 20:28)
| | Да, серьезный у вас подход, у меня пути фиксированы, "мими" помогает....
Если вас будут атаковать в этом направлении, то не надейтесь на то, что пользоваться будут вашей формой. Если браузер отрезает путь и передает только имя файла на сервер, и ваша "фиксация" еще более менее служит задаче, то отправляя файл без вашей формы к его имени можно добавить любой путь. А ведь есть basename().
Тип файла изображения проверяется по заголовку, но РНР позволяет выполнить код после любых данных, если встретит после них свой тег, getimagesize() - это слабое утешение. Уж более лучше для изображений проверять if($im = imagecreatefromstring(upload)) { save $im }
Да и отправляя вам php-червяка, с чистой совестью отправят и "мими-текст".
Каталоги для загрузки нужно закрывать для исполнения любых скриптов.
В сети информации о безопасности много, почему бы не почитать на ночь. | |
|
|
|
|
|
|
|
для: 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
|
ну вот это все и рекомендуют
значит врут гады... | |
|
|
|
|
|
|
|
для: 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 ... | |
|
|
|