Najlepsze pytania
Chronologia
Czat
Perspektywa

Common Gateway Interface

Z Wikipedii, wolnej encyklopedii

Common Gateway Interface
Remove ads

CGI (ang. Common Gateway Interface) – znormalizowany interfejs, umożliwiający komunikację pomiędzy oprogramowaniem serwera WWW a innymi programami znajdującymi się na serwerze. Zazwyczaj program serwera WWW wysyła do przeglądarki statyczne dokumenty HTML. Za pomocą programów CGI można dynamicznie (na żądanie klienta) generować dokumenty HTML, uzupełniając je np. treścią pobieraną z bazy danych.

Thumb
Schematyczne przedstawienie interfejsu CGI

Programy CGI są często pisane w językach interpretowalnych takich jak Perl, przez co nazywa się je także skryptami CGI.

Remove ads

Cechy CGI

  • Stabilny (bez zmian od 1995), dostępny za darmo standard.
  • Implementacja CGI nie jest zależna od konkretnej platformy sprzętowej/systemowej, natomiast zależy od konkretnego programu serwera WWW. Większość popularnych serwerów ma zaimplementowany mechanizm CGI, włączając w to serwery działające na systemach Unix (Apache, Sun Java System Web Server, NSCA), działające na platformie Microsoft Windows (Apache, Netscape, Microsoft IIS) oraz Macintosh (Apache, WebStar). Również wiele innych serwerów implementuje interfejs CGI.
  • Szeroki wachlarz możliwości zastosowania (patrz zastosowanie)
  • Programy CGI można pisać praktycznie w dowolnym języku programowania. Często wykorzystuje się Perla, PHP, Ruby, Tcl, C, C++, Visual Basic i AppleScript. Dla wielu z tych języków stworzono biblioteki wspomagające obsługę CGI.
  • Obsługa CGI wiąże się zazwyczaj z tworzeniem nowego procesu na każde żądanie. Powoduje to duże obciążenie serwera, zwłaszcza dla języków interpretowanych. Powstały rozwiązania przyśpieszające typu FastCGI lub automatyczne tworzenie tymczasowych wersji kompilowanych.
Remove ads

Zastosowanie programów / skryptów CGI

  • Dynamiczne generowanie dokumentów przed wysłaniem ich do przeglądarki (np. z aktualną datą)
  • Tworzenie dokumentów w oparciu o dane znajdujące się w bazie i formatowanie rekordów w celu wyświetlenia ich zawartości na stronie
  • Pobieranie i formatowanie danych będących wynikiem działania innego oprogramowania (np. dane pobierane z urządzenia pomiarowego mogą być na bieżąco wysyłane do przeglądarki)
  • Generowanie i przetwarzanie ankiet i kwestionariuszy
  • Tworzenie dynamicznych ilustracji - takich jak wykresy czy schematy
Remove ads

Bezpieczeństwo

Podsumowanie
Perspektywa

Ponieważ programy CGI nie różnią się praktycznie niczym od pozostałych programów uruchamianych na serwerze są tak samo podatne na występowanie błędów i awarie. Ponieważ jednak w większości przypadków programy/skrypty CGI otrzymują oraz przetwarzają dane „z zewnątrz”, bardzo ważne jest, aby sprawdzić dokładnie ich poprawność. Nie ma żadnej gwarancji, że użytkownik strony wypełni wszystkie pola formularza zgodnie z przeznaczeniem, wyśle do serwera poprawne dane lub program/skrypt CGI nie stanie się przedmiotem ataku crackera. Z tych powodów zaleca się stosowanie pewnych reguł podczas pisania programów/skryptów CGI.

  • Należy zwracać szczególną uwagę na bezbłędność aplikacji
  • Wszystkie dane odbierane z zewnątrz powinny być dokładnie weryfikowane szczególnie pod kątem ich rozmiaru, zgodności typu i zawartości
  • Programy/skrypty CGI powinny być uruchamiane z względnie najniższymi uprawnieniami lub, jeśli to możliwe, w odizolowanym środowisku chroot
  • Administrator serwera powinien mieć ścisłą kontrolę nad dostępnymi programami/skryptami CGI. Aby ułatwić to zadanie, większość serwerów umożliwia uruchamianie tylko tych programów, które znajdują się w specjalnym katalogu (zazwyczaj cgi-bin w głównym katalogu serwera)

Wymiana danych między serwerem a programami CGI

Podsumowanie
Perspektywa

Zgodnie ze specyfikacją CGI istnieją wyraźnie określone drogi wymiany danych między serwerem a skryptem CGI oraz w drugą stronę. Zgodnie ze specyfikacją dane mogą być dostępne dla skryptu CGI w dwóch postaciach: jako dane pojawiające się na standardowym wejściu programu lub w specjalnych zmiennych środowiskowych tworzonych przez serwer podczas uruchamiania programu CGI. Wyniki program/skrypt wysyła na standardowe wyjście, a oprogramowanie serwera poddaje je dalszemu przetwarzaniu.

Zmienne środowiskowe

Więcej informacji Zmienna, Typ ...

Oprócz zmiennych przedstawionych w tabeli w zależności od oprogramowania serwera mogą być tworzone inne zmienne środowiskowe. Więcej informacji na ich temat znajduje się w dokumentacji oprogramowania.

W ramce poniżej znajduje się przykładowy skrypt CGI napisany w Perlu, który wyświetla dostępne zmienne środowiskowe.

#!/usr/bin/perl

print "Content-type: text/html\n\n";

foreach $key (keys %ENV) 
{
    print "$key --> $ENV{$key}<br>";
}
Remove ads

Zobacz też

Linki zewnętrzne

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads