Common Gateway Interface

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken

De Common Gateway Interface ( CGI ) is een standaard voor gegevensuitwisseling tussen een webserver en software van derden die verzoeken verwerkt. CGI is een variant van het dynamisch of interactief maken van websites , waarvan de eerste overwegingen teruggaan tot 1993.

functionaliteit

Een webserver die CGI ondersteunt, voorziet de externe software van een runtime-omgeving , die met name uit het volgende bestaat:

Omgevingsvariabelen
Omgevingsvariabelen (bijv. SERVER_NAME ) die het programma helpen informatie te verkrijgen over de verzoeken voor de instelling en situatie van de webserver. De namen en het formaat van de inhoud zijn grotendeels gestandaardiseerd.
Ingangs- en uitgangskanalen
Levering van standaard datastromen . Meestal is het volgende gekoppeld:
  • het stdin- kanaal met de eventueel bestaande request body (request)
  • het stdout- kanaal met het antwoord van de webserver.

voordelen

In plaats van alleen statische pagina's van een webserver te laden, die daar als afgewerkte bron beschikbaar zijn , is het met CGI ook mogelijk om HTML-pagina's dynamisch te genereren. I.E. deze hoeven op het moment van de aanvraag niet op de server te staan, maar kunnen door het CGI-programma worden gegenereerd.

Bovendien kunnen CGI-programma's in veel programmeertalen worden geschreven, aangezien de vereisten niet verder gaan dan het bovenstaande.

nadeel

Een nadeel van CGI-uitvoering is de relatief lage snelheid, omdat voor elke CGI-aanroep een nieuw proces wordt uitgevoerd. Dit is de reden waarom CGI niet meer zo vaak wordt gebruikt op drukbezochte sites, omdat zelfs benaderingen zoals FastCGI , die bepaalde nadelen van CGI opheffen, op zijn minst niet op een breed front geaccepteerd zouden kunnen worden.

Om dit probleem tegen te gaan, zijn er nu dergelijke modules. B. voor de Apache-webserver , die de interpreter voor verschillende scripttalen (bijv. mod_perl voor Perl , mod_python voor Python enz.) rechtstreeks in het webserverproces integreert. Deze wordt maar één keer geladen bij het starten van de webserver, in plaats van bij elke aanvraag.

Een andere, vaak nog efficiëntere, optie is om de programma's als externe processen uit te voeren en de verzoeken van de browser naar hen over te dragen via FastCGI. In tegenstelling tot de bovengenoemde integratie als Apache-module kan niet alleen de interpreter van de programmeertaal permanent draaien, maar kan ook de applicatie zelf continu geladen worden en zo inkomende aanvragen nog efficiënter afhandelen.

veiligheid

Het feit dat programma's die een derde partij heeft gemaakt op de webserver kunnen worden uitgevoerd, is uiterst relevant voor de beveiliging . Daarom moet ervoor worden gezorgd dat een programma dat via CGI is gestart, alleen bepaalde, beperkte soorten programmaroutines mag uitvoeren (bijvoorbeeld geen webserverbestanden verwijderen, enz.).

In het geval van de Apache-webserver wordt de uitvoering van CGI-programma's beveiligd tegen crackeraanvallen met behulp van de module mod_suexec, die erop gericht is als rootgebruiker binnen te dringen . De beveiligingsmaatregelen zijn op meerdere niveaus gestructureerd en zijn zo streng dat veel serverbeheerders zijn overgestapt op het draaien van andere server-side talen via CGI.

Zie ook

Andere server-side technologieën

web links