http://qs1969.pair.com?node_id=529132


in reply to Re: running an executable from a cgi script
in thread running an executable from a cgi script

CGI is insecure if you use input from the user to pass into a program. For example:

Insecure CGI example: print "Enter a command to execute:" my $command = <STDIN>; system($command); # BAD! User enters 'rm -fR *' !!!


However, in your code above, you are not taking any input. You are simply executing a program and supplying it with a file. Based on your snippet, you would do this exact same thing at a command line. You aren't giving the user any choice of what to do.

CGI can also be dangerous is you allow someone to job off processes on your machines, like you are doing above. Is this a heavy duty process? If a user bounces on the refresh button, can they start a whole lot of these jobs, and eat up system resources causing poor performance and possibly a crash? That's a problem too. Have you dealt with that in your script?

Replies are listed 'Best First'.
Re^3: running an executable from a cgi script
by Angharad (Pilgrim) on Feb 09, 2006 at 16:48 UTC
    OK ... I don't think the 'refresh' problem will arise.
    The steps will be as follows:
    A script that uploads the text file to a named directory on the server. This has already been written. This cgi script will then (hopefully) point to this script which will then call the external program.
    The results of the external program will come though as a text file also.
      So you are allowing a user to upload a text file and your executable is doing some sort of processing on that file. Then yes, you have a potential security problem.

      If you're greping the text file for some keywords and printing them back...not such a big deal. If you're letting the user upload a shell script and executing it for them...red alert! So we need to know what your executable is doing with the text.
        ok. thanks for your help so far. The executable is simply taking the file and extracting some information from it and then its doing some calculations with the information it has been given.
        So .. the upload script first allows the user to upload the file (the user can only upload a text file and only up to a certain size .. that has already been taken care of). Then the upload script sends the name and location of the file to the second script which then runs the external program