Hello,

BTW, no one other than me is worried by the security problem due to 
large file uploading I described below ?

On 04/30/2007 15:21:29 +0200, Gabriel Barazer <[EMAIL PROTECTED]> wrote:

> Hello,
> 
> I experienced recently some problmes since a customer is doing large 
> file uploads with PHP (which is run by mod_fcgid, of course) : It seems 
> mod_fcgid is consuming much memory when uploading a file to PHP. I found 
> in the source file fcgid_bridge.c:473 the problem : as said in the 
> source, the entire request (stdin/post input) is loaded into memory 
> before sending it to the fastcgi Application Server (PHP in our case). 
> Although it's a well workaround for dealing with slow clients, I think 
> this is not the good behavior to implement, here are the points 
> highlighted :
> - Uploading files is becoming a major security problem, since a DoS can 
> be triggered by uploading a very large file (I experienced some attacks 
> with 1/2GB over a fast connection)
> - Additionnally, Video (=large) file uploading is becoming more and more 
> popular, increasing the memory consumption.
> - Dealing with slow clients must be done by the appliction server, which 
> can take any appropriate measure (e.g. having a special queue processing 
> for slow clients)
> - Upload progress meter is not possible if all the input data is 
> buffered before sent to the fastcgi process. (see RFC1867 : File Upload 
> Progress hook handler)
> - Upload of large files is better handled by the fast cgi AS, because of 
> various method used to store the upload data during progress (at the 
> application level , not the communication level that fastcgi is). e.g. 
> PHP handles file upload by creating temporary files, which location of 
> these can be customised by a php.ini directive. I think this task has 
> not to be handled by the fastcgi layer (which serves as a comm./bridge 
> protocol, not a input processor)
> - There is no need for the fastcgi process manager to handle and buffer 
> slow clients : A FastCGI application designed to handle load can handle 
> multiple connections AND the mod_fcgid process manager already does 
> multiple connection management with the adaptive spawning feature for 
> application which are not multi-tasked/threaded. (I even know fastcgi 
> applications which embed a process manager themselves)
> 
> 
> What are the problems with slow clients :
> - Sending input is very long, not constant : e.g. with shaped 
> connections : data flow is sent by "peaks" foloowed by no data input for 
> a variable time.
> - Connection is longer busy at the Apache level, but at the fastcgi 
> application level too (the workaround of buffering all the input prevent 
> the fastcgi app from being busy buring the input loading).
> 
> How to deal with this, my proposal :
> - What about buffering input like the output buffer, by chunks of, say, 
> 8Kbytes ? The major problem is the time to fill the buffer : if the time 
> required to fill the buffer is too long, application can timeout, but I 
> think this is the normal behavior of an application to manage 
> communication timeout. What about don't buffering the input at all ? 
> This way the data flow AND the data flow rate can by processed by the 
> application (such as measuring the data flow rate to put a slow request 
> in a special queue).
> - Because maybe some users prefer the current behavior of buffering all 
> the input data, a compatibility switch would be a nice thing (e.g. 
> InputBuffering Off / On)
> 
> What do you think about it ?
> 
> BTW: who are the current maintainer(s) of this project ? The 
> documentation of this project is not very up-to-date and I had to read 
> the source code to know all the directives... Maybe can I be of some help ?
> 
> Regards,
> 
> Gabriel
> 
> 
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Mod-fcgid-users mailing list
> Mod-fcgid-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mod-fcgid-users

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Mod-fcgid-users mailing list
Mod-fcgid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mod-fcgid-users

Reply via email to