有没有办法不允许直接访问cgi-bin但只允许本地php访问

时间:2013-11-22 19:13:26

标签: php apache cgi-bin

现在,用户可以使用url直接在cgi-bin目录中执行某些操作 HTTP:\ someserver \的cgi-bin \ mycommand的

我不想让用户这样做,但允许使用下面的代码执行php脚本。

这可能吗? 提前致谢

define ("CGI_CMD_URL_URL",          "http://" . $_SERVER['HTTP_HOST'] . "/cgi-bin/mycommand");

// use key 'http' even if you send the request to https://...
$options = array
(
   'http' => array
   (
        'header'  => 'Content-type: application/x-www-form-urlencoded\r\n',
        'method'  => 'POST',
        'content' => $data,
   ),
);

// create context
$context = stream_context_create($options);

// open the stream to get the output from CGI_CMD_URL_URL
$uploadstream = @fopen(CGI_CMD_URL_URL, 'rb', false, $context);
if (!$uploadstream)
{
    $_SESSION[ADDITIONAL_MSG] = $php_errormsg;
    report_error(SOME_ERROR);
}

// read the result
$result = stream_get_contents($uploadstream);

// close the stream
fclose($uploadstream);

// return data
return $result;

1 个答案:

答案 0 :(得分:1)

是的,在Apache Webserver的情况下使用.htaccess。您必须拒绝所有并仅允许您的主人。

http://httpd.apache.org/docs/2.2/howto/access.html

尊重您的网络服务器上的任何自我调用方法都会影响您的服务器性能并减少该引擎上可能的最大客户端调用。在我看来,这样的任务是最糟糕的做法(在很多情况下)。