2013-11-22 5 views
0

Теперь пользователь может непосредственно выполнить что-то в каталоге cgi-bin с помощью URL-адреса http: \ someserver \ cgi-bin \ mycommandЕсть ли способ запретить прямой доступ к cgi-bin, но разрешить только локальный доступ к php

Я не хочу разрешать пользователю делать это, но разрешать выполнение скрипта 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

Да, с .htaccess в случае Apache Webserver. Вы должны отказать всем и разрешить только ваш хозяин.

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

Респект, что любой самостоятельно вызывая метод на вашем веб-сервере это попробовать, что влияет на ваш сервер производительность и уменьшить возможный максимальный клиент вызывает на этом двигателе. На мой взгляд, такие задачи - наихудшая практика (во многих случаях).

Смежные вопросы