Активизация механизма CGI

 

CGI- Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web сервер.

Обычно гипертекстовые документы, извлекаемые из WWW серверов, содержат статические данные. С помощью CGI можно создавать CGI-программы, называемые шлюзами, которые во взаимодействии с такими прикладными системами, как система управления базой данных, электронная таблица, графика и др., смогут выдать на экран пользователя динамическую информацию.

Программа-шлюз запускается WWW сервером в реальном масштабе времени. WWW сервер обеспечивает передачу запроса пользователя шлюзу, а она в свою очередь, используя средства прикладной системы, возвращает результат обработки запроса на экран пользователя. Программа-шлюз может быть создана на языках C/C++, Fortran, Perl, TCL, Unix Shell, Visual Basic, Apple Script, РНР. Как выполнимый модуль, она записывается в поддиректории с именем cgi-bin WWW сервера.

Функциональные возможности CGI обеспечиваются модулем mod_cgi и активизируются следующим образом:

· с помощью ScriptAlias – помечает каталог как содержащий исполняемые сценарии;

· с помощью указания параметра ExecCGI в директиве Options.

 

Установка каталога CGI с помощью ScriptAlias. Этот режим удобен на сайте, где пользователям разрешено обновлять свои собственные веб-страницы. Пользователи могут выполнять CGI-сценарии, но не могут создавать собственные, так как Apache не будет распознавать их как CGI.

 

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

 

В результате Apache интерпретирует любой входящий URL типа http://www.domain.com как запрос на выполнение сценариев CGI.

 

Повышение уровня безопасности каталогов для ScriptAlias. Применяется контейнер <Directory>, предотвращающий использование файлов .htaccess, которые могут ослабить защиту сервера.

 

<Directory /usr/local/apache/cgi-bin/>

AllowOverride None

Options None

Order allow,deny

Allow from all

</Directory>

 

Установка каталога CGI с помощью ExecCGI.

 

Alias /cgi-bin/ "/usr/local/apache/cgi-bin/"

<Directory /usr/local/apache/cgi-bin/>

AllowOverride None

Options ExecCGI

SetHandler cgi-script

</Directory>

 

Описание сценариев CGI по расширению. Директива SetHandler внутри <Directory> вызывает обработчик для любого файла в указанном каталоге. Директива AddHandler позволяет указать одно или несколько расширений файлов, которые будут считаться сценариями CGI.

 

AddHandler cgi-script .cgi .pl .pm .exe .bat

 

Для выполнения данной директивы необходимо указать еще и ExecCGI. Единственная директива, разрешающая CGI без указания ExecCGI – ScriptAlias.

 

Описание сценариев CGI по типу среды. Директива AddType позволяет связывать расширения файлов с MIME-типами:

 

AddType application/x-http-cgi .cgi