Как стать автором
Обновить

Комментарии 21

Что-то я не совсем понял. Т.е. у вас на сервере будут храниться zip-архивы, а вы из них напрямую данные берете через getStream()?
Если да, то как это отразится на производительности?
Мне нужны данные из тех CSV-файлов, которые лежат в ЗИПе. И нужны мне эти данные в базе данных, а не в самих ЦСВшках и уж тем более не в архиве. То есть данные из ЦСВшек я импортирую в БД. Поэтому я беру тепленьким временный файл ( $_FILES['userfile']['tmp_name'] ). И прямо не распаковывая его, импортирую все содержащиеся в нем ЦСВшки в БД. После этого PHP сам позаботится о том, чтобы удалить архив, который больше уже не нужен.
А… Если здесь БД фигурирует, то тогда все нормально. Единственно не знаю насколько ZipArchive->getStream() корректно будет обрабатывать различные архивы. Ведь тот же zip бывает разных версий, и от версии к версии наверняка делаются изменения. Что произойдет если кто-то решит закачать архив, сжатый последним zip-ом на ваш сайт? Может не сработать
По-моему, изменения в алгоритм архивирования не вносятся.
Вносятся. Есть такие проблемы именно с этим расширением, архивы, созданные винзипом последних версий не открываются.
Уже столкнулся с таким :( Хорошо бы иметь поддержку всех популярных форматов, zip, rar, 7z и т.д. прозрачно для программера, но что-то никто не догадался сделать такое :)
Что-то я не совсем понял. Т.е. у вас на сервере будут храниться zip-архивы, а вы из них напрямую данные берете через getStream()?
Если да, то как это отразится на производительности?
Спасибо за инфу.
И PclZip нафиг можно выкинуть
file_get_contents(«zip://$file#$extract_file»);
Точно. Но это — если точно знать имя зазипованного файла ($extract_file). В моем случае пользователь может зазиповать сколько угодно файлов и обзывать их тоже как его душе будет угодно. А я их все найду в архиве и импортирую :)
Совсем недавно было рассказано почему очень плохо работать с файлами $_FILES['userfile']['tmp_name']. Сам с этим сталкивался.
Не мой случай. Любые настройки PHP я сам могу выставить. Хотя вы правы, это стоит отметить в статье.
а если я запихну в csv шелл — вы его так прямо без проверки вольете в базу?
Ну в принципе он в базе никому не повредит :) Впрочем, то, что я лично описываю — сервис для администраторов/контент-менеджеров, здесь нет нужды быть чрезмерным параноиком.
а вы просто наверное не знакомы с тем как заливается шелл на сервер через базу данных? и потом прекрасно злоумышленник делает что хочет с вашим сервером. я бы на вашем месте обязательно проверял что там вливается в базу
Наверное, не знаком. Я многого не знаю. Расскажите, пожалуйста, подробнее, очень интересно.
процедура проста

1. в поле базы заливается тест шелл скрипта
2. затем выполняется запрос select data into outfile 'someshell.php'
3. заходим domain.com/someshell.php и используем наш шелл

само собой таких дыр может и не быть, но потенциально они есть и их надо закрывать
и кто же даст такой запрос выполнить? тем более кто даст 777 на директорию, где хранятся скрипты. одна сплошная фантастика.
дадут дадут ;) и такие уникумы встречаются и права такие ставят…
Не говорите ерунды. В том случае, что вы описываете, дыра _именно _ в месте, где позволяется злоумышленнику выполнить такой запрос, при этом данные в БД вообще не имеют значения, можно выполнить select 'my dirty code' into outfile 'someshell.php', да и вообще ситуация надумана и высосана из пальца. Зарубите на носу: никакие данные в базе вреда никому нанести не могу.
Вам виднее кто ж спорит, вот после таких самоуверенных людей и ломают сервера Visa (что недавно было анонсировано) и тд и тп… а ведь они тоже были уверенны — нас не сломают, мы такие крутые перцы
Кстати, ваш вопрос — оффтопик. Статья не безопасности, а об одной из фич ZipArchive'а.
> Наверное, не совсем понятно объяснил

выцепив глазами слово ZipArchive->getStream() я понял о чём статья.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории