Что-то я не совсем понял. Т.е. у вас на сервере будут храниться zip-архивы, а вы из них напрямую данные берете через getStream()?
Если да, то как это отразится на производительности?
Мне нужны данные из тех CSV-файлов, которые лежат в ЗИПе. И нужны мне эти данные в базе данных, а не в самих ЦСВшках и уж тем более не в архиве. То есть данные из ЦСВшек я импортирую в БД. Поэтому я беру тепленьким временный файл ( $_FILES['userfile']['tmp_name'] ). И прямо не распаковывая его, импортирую все содержащиеся в нем ЦСВшки в БД. После этого PHP сам позаботится о том, чтобы удалить архив, который больше уже не нужен.
А… Если здесь БД фигурирует, то тогда все нормально. Единственно не знаю насколько ZipArchive->getStream() корректно будет обрабатывать различные архивы. Ведь тот же zip бывает разных версий, и от версии к версии наверняка делаются изменения. Что произойдет если кто-то решит закачать архив, сжатый последним zip-ом на ваш сайт? Может не сработать
Вносятся. Есть такие проблемы именно с этим расширением, архивы, созданные винзипом последних версий не открываются.
Уже столкнулся с таким :( Хорошо бы иметь поддержку всех популярных форматов, zip, rar, 7z и т.д. прозрачно для программера, но что-то никто не догадался сделать такое :)
Что-то я не совсем понял. Т.е. у вас на сервере будут храниться zip-архивы, а вы из них напрямую данные берете через getStream()?
Если да, то как это отразится на производительности?
Точно. Но это — если точно знать имя зазипованного файла ($extract_file). В моем случае пользователь может зазиповать сколько угодно файлов и обзывать их тоже как его душе будет угодно. А я их все найду в архиве и импортирую :)
Ну в принципе он в базе никому не повредит :) Впрочем, то, что я лично описываю — сервис для администраторов/контент-менеджеров, здесь нет нужды быть чрезмерным параноиком.
а вы просто наверное не знакомы с тем как заливается шелл на сервер через базу данных? и потом прекрасно злоумышленник делает что хочет с вашим сервером. я бы на вашем месте обязательно проверял что там вливается в базу
1. в поле базы заливается тест шелл скрипта
2. затем выполняется запрос select data into outfile 'someshell.php'
3. заходим domain.com/someshell.php и используем наш шелл
само собой таких дыр может и не быть, но потенциально они есть и их надо закрывать
Не говорите ерунды. В том случае, что вы описываете, дыра _именно _ в месте, где позволяется злоумышленнику выполнить такой запрос, при этом данные в БД вообще не имеют значения, можно выполнить select 'my dirty code' into outfile 'someshell.php', да и вообще ситуация надумана и высосана из пальца. Зарубите на носу: никакие данные в базе вреда никому нанести не могу.
Вам виднее кто ж спорит, вот после таких самоуверенных людей и ломают сервера Visa (что недавно было анонсировано) и тд и тп… а ведь они тоже были уверенны — нас не сломают, мы такие крутые перцы
расширение zip, небольшой хинт