ID: 22127 Comment by: scottmacvicar at ntlworld dot com Reported By: zlo at canada dot com Status: Verified Bug Type: CGI related Operating System: * PHP Version: 4CVS, 5CVS New Comment:
403 is probably the most appropriate response code. Though 400 Bad Request could be another possibility. http://www.w3.org/Protocols/HTTP/HTRESP.html patch ------- diff -u cgi_main.c cgi_main.c.patched --- cgi_main.c 2004-02-28 14:53:31.000000000 +0000 +++ cgi_main.c.patched 2004-02-28 14:54:16.000000000 +0000 @@ -1106,6 +1106,7 @@ in case some server does something different than above */ && (!redirect_status_env || !getenv(redirect_status_env)) ) { + SG(sapi_headers).http_response_code = 403; PUTS("<b>Security Alert!</b> The PHP CGI cannot be accessed directly.\n\n\ <p>This PHP CGI binary was compiled with force-cgi-redirect enabled. This\n\ means that a page will only be served up if the REDIRECT_STATUS CGI variable is\n\ Previous Comments: ------------------------------------------------------------------------ [2003-08-08 06:16:21] [EMAIL PROTECTED] Still a problem with both PHP4/PHP5. ------------------------------------------------------------------------ [2003-03-30 15:45:43] zlo at canada dot com using the latest build: # HEAD http://mysite/cgi-bin/php/pi.php 500 Bad response code: 'HTTP/1.1 0' ------------------------------------------------------------------------ [2003-03-30 06:44:32] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2003-02-08 14:46:41] zlo at canada dot com When php is used in cgi mode with force-cgi-redirect enabled, and the safety mechanism is triggered, PHP produces a bogus http response line: HTTP/1.1 0 this is invalid and browsers fail to display the output. it happens for PHP 4.3.0 and a fresh PHP 4.3.1-dev snapshot under both Windows and Linux. AFAIK 0 is not a valid response code, and unless one uses a non-compliant browser or accesses the page through a raw telnet session, the warning page cannot be seen. it would be desirable for PHP to produce a meaningful response code, such as 200, 403 or 500. for example: GET /cgi-bin/php/pi.php HTTP/1.1 HOST: mysite HTTP/1.1 0 Date: Sat, 08 Feb 2003 20:32:46 GMT Server: Apache/1.3.27 (Unix) PHP/4.3.0 Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251 283 <b>Security Alert!</b> The PHP CGI cannot be accessed directly. <p>This PHP CGI binary was compiled with force-cgi-redirect enabled. This means that a page will only be served up if the REDIRECT_STATUS CGI variable is set, e.g. via an Apache Action directive.</p> <p>For more information as to <i>why</i> this behaviour exists, see the <a href="http://php.net/security.cgi-bin">manual page for CGI security</a>.</p> <p>For more information about changing this behaviour or re-enabling this webserver, consult the installation file that came with this distribution, or visit <a href="http://php.net/install.windows">the manual page</a>.</p> 0 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22127&edit=1