В Mon, 14 Oct 2024 12:06:07 +0300 Eugene Berdnikov <[email protected]> пишет:
> On Mon, Oct 14, 2024 at 11:02:17AM +0300, Victor Wagner wrote: > > В Mon, 14 Oct 2024 04:05:56 +0100 > > Misha Ramendik <[email protected]> пишет: > > > > > авторизации. Я высылаю линк человеку, он по этому линку нажимает > > > кнопку и заливает файл, линк перестаёт работать. Если можно как-то > > > обрабатывать заливаемое CGI по кусочкам (и выдавать при этом юзеру > > > progress), то я пожалуй понимаю как это реализовать, но это пока > > > "если". > > > > Проще считать что в тот момент когда у тебя запустился скрипт и > > получил multipart/form-data, у тебя уже весь файл на сервере. > > Проще, но при таком подходе progress-bar никак не сделать. Поэтому не надо увлекатсья украшательством и делать прогресс-бары. > И если бы данные от клиента всегда целиком выкачивались бы на сервер, > то это означало бы, что лимит на upload не работает. И это была бы > дырка для DoS-a. Да, конечно. Но скорее всего это решается лимитом на размер тела запроса на уровне конфигурации веб-сервера > Обработчик должен выкачивать небольшую часть тела > запроса, делать разборку заголовков (включая Content-type: > multipart/form-data), а затем вычитывать сокет/пайп до тех пор, пока > не будет превышен лимит. При превышении нужно выдать клиенту ошибку и > закрыть сокет/пайп. Современные web-сервера не доверяют пользовательским обработчикам. С недавних пор в apache не доверяют даже Content-Length, выданной обработчиком клиенту, если не указать специальным образом что Content-Length от данного обработчика можно доверять, установив переменную среды ap_trust_cgilike_cl в yes. https://httpd.apache.org/docs/current/env.html#special -- Victor Wagner <[email protected]>

