Qu'est-ce que l'interface de passerelle commune ?

26 août 2024

La Common Gateway Interface (CGI) est un protocole standard qui permet au Web servers pour exécuter des programmes externes ou scripts, souvent écrit dans des langues comme Perl, Python, C, pour générer du contenu Web dynamique.

Qu'est-ce que l'interface de passerelle commune ?

Qu'est-ce que l'interface de passerelle commune (CGI) ?

L'interface de passerelle commune (CGI) est un protocole qui définit comment web servers interagir avec des applications externes, permettant la génération de contenu dynamique en réponse aux demandes des clients. Quand un site Web server reçoit une requête qui nécessite un traitement dynamique, il peut invoquer un script ou un exécutable CGI. Ce script traite les entrées du client, généralement via des variables d'environnement ou des entrées standard, et produit une sortie que le server puis transmet au client dans le cadre du HTTP réponse.

CGI (Common Gateway Interface) a été largement utilisé au début du Web pour permettre la génération de contenu dynamique en permettant au Web servers pour exécuter des scripts externes. Il a joué un rôle crucial dans le développement de sites Web interactifs, mais a été confronté à des limitations, notamment en termes de performances, car chaque requête engendrait un nouveau processus, ce qui entraînait des inefficacités en cas de trafic intense.

À mesure que le trafic Web augmentait et que la demande de solutions plus évolutives et plus efficaces augmentait, des alternatives telles que FastCGI et serverLes langages de script latéraux (par exemple PHP, Python via WSGI) ont commencé à remplacer CGI à la fin des années 1990 et au début des années 2000. Ces alternatives offraient de meilleures performances et sécurité en réduisant les frais généraux associés à la création de processus et en fournissant des solutions plus intégrées et plus sécurisées. flexenvironnements de développement ibles. Par conséquent, l'utilisation de CGI a diminué, même si elle reste utilisée dans certains systèmes existants.

Comment fonctionne l'interface de passerelle commune ?

L'interface de passerelle commune fonctionne comme intermédiaire entre un site Web server et externe applications ou des scripts, permettant la génération de contenu dynamique en réponse aux demandes des clients. Voici comment se déroule généralement le processus :

  1. Demande du client. Lorsqu'un utilisateur demande une page Web qui nécessite un contenu dynamique, comme la soumission d'un formulaire ou l'accès à une ressource qui n'est pas seulement statique HTML, le Web server identifie que la demande doit être gérée par un script CGI.
  2. Web server invoque le script CGI. La toile server localise le script CGI approprié, qui peut être écrit dans n'importe quel langage de programmation supporté par le serverL’ server configure l'environnement dans lequel le script s'exécutera, en transmettant des informations importantes via des variables d'environnement. Cela inclut des données telles que la méthode de requête (GET, POST), les chaînes de requête, les entrées de formulaire et d'autres en-têtes HTTP.
  3. Gestion des entrées. Si la méthode de requête est GET, les données d'entrée sont transmises au script via la chaîne de requête (partie du URL). Si la méthode de requête est POST, les données d'entrée sont transmises au script via une entrée standard (stdin), généralement sous la forme de paires clé-valeur.
  4. Exécution du script. La toile server exécute le script CGI en tant que processus distinct. Le script traite les données d'entrée, effectuant des tâches telles que l'interrogation d'un base de données, en traitant les entrées de l'utilisateur ou en générant une réponse personnalisée.
  5. Générer une sortie. Le script CGI génère une sortie, généralement sous forme de HTML, mais il peut également inclure d'autres types de contenu tels que des images, du texte brut ou du JSON. Le script doit également générer un ensemble d'en-têtes HTTP (par exemple, Content-Type) avant de générer le contenu réel.
  6. Server réponse. La sortie du script CGI, y compris les en-têtes et le contenu, est renvoyée au Web serverL’ server puis regroupe cette sortie dans le cadre de la réponse HTTP et la renvoie au navigateur du client.
  7. Le client reçoit une réponse. Le navigateur du client reçoit la réponse du server et restitue le contenu. Si la sortie était HTML, le navigateur affiche la page Web. S'il s'agissait d'un autre type de données, le navigateur les traite en conséquence.

Utilisations courantes de l'interface de passerelle

utilisations de cgi

L'interface de passerelle commune a été utilisée dans diverses applications où la génération de contenu dynamique était requise. Voici quelques-unes de ses utilisations courantes :

  • Traitement des formulaires. Les scripts CGI étaient souvent utilisés pour gérer les soumissions de formulaires sur les sites Web. Lorsqu'un utilisateur soumettait un formulaire, les données étaient envoyées au server, où un script CGI a traité l'entrée. Le script validait les données, les stockait dans une base de données ou effectuait des calculs basés sur l'entrée avant de renvoyer une réponse à l'utilisateur.
  • Génération de contenu dynamique. CGI a permis la création de pages Web dynamiques qui changent en fonction de l'interaction de l'utilisateur ou d'autres entrées. Par exemple, un script CGI a généré une page Web personnalisée en fonction des préférences ou des entrées de l'utilisateur, telles qu'un message d'accueil personnalisé, des résultats de recherche ou un rapport généré dynamiquement.
  • Interaction avec la base de données. Les scripts CGI interagissaient avec les bases de données pour récupérer, mettre à jour ou supprimer des informations. Ceci était couramment utilisé dans des applications telles que systèmes de gestion de contenu (CMS), les plateformes de commerce électronique ou toute application Web nécessaire pour gérer et afficher les données stockées dans une base de données.
  • Gestion de fichiers. CGI était utilisé pour gérer les téléchargements et téléchargements de fichiers sur un site Web. server. Par exemple, un script CGI permettait aux utilisateurs de télécharger des fichiers vers un server, traitez ces fichiers (par exemple, redimensionnez les images) et stockez-les dans un emplacement spécifique. De même, les scripts CGI géraient le téléchargement sécurisé des fichiers.
  • Gestion des e-mails. Des scripts CGI étaient utilisés pour envoyer des e-mails en fonction des actions des utilisateurs. Par exemple, lorsqu'un utilisateur soumettait un formulaire, un script CGI envoyait un e-mail de confirmation à l'utilisateur ou informait un administrateur de la soumission.
  • Journalisation et analyse. Des scripts CGI ont été utilisés pour enregistrer l'activité des utilisateurs et collecter des données analytiques. Par exemple, un script CGI enregistrerait des détails sur chaque visiteur d'un site Web, tels que l'heure d'accès, les pages visitées et l'identité de l'utilisateur. adresses IP, qui ont ensuite été analysés pour comprendre le comportement des utilisateurs et améliorer le site.
  • Exécution de programmes externes. CGI était utilisé pour exécuter des programmes ou des scripts externes sur le server. Cela permettait aux applications Web d'effectuer des tâches complexes nécessitant l'exécution de binaires compilés ou de scripts shell, telles que le traitement de données, la génération de rapports ou l'appel d'autres outils en ligne de commande.
  • Passerelle vers d'autres services. CGI a agi comme une passerelle entre le Web server et d'autres services ou API. Par exemple, un script CGI interfacé avec un service backend, comme un service météo API, pour récupérer les données et les présenter à l'utilisateur de manière formatée. Cela a rendu CGI utile pour intégrer des services tiers dans une application Web.
  • Gestion de contenu. Les scripts CGI ont été utilisés pour créer, modifier et supprimer du contenu Web en fonction des entrées de l'utilisateur ou des contrôles administratifs. Cela s'est avéré particulièrement utile dans les systèmes de gestion de contenu où les utilisateurs non techniques doivent mettre à jour le contenu du site Web sans modifier directement les fichiers HTML.
  • Intégration du système existant. Dans les scénarios où des systèmes plus anciens sont encore utilisés, les scripts CGI servent de pont entre les applications Web modernes et les systèmes existants. CGI peut être utilisé pour envelopper des applications ou des scripts plus anciens, permettant ainsi d'y accéder et de les contrôler via une interface Web.

Avantages et défis de l’interface de passerelle commune

L'interface de passerelle commune (CGI) a été l'une des premières méthodes utilisées pour créer du contenu dynamique sur le Web, permettant au Web servers pour exécuter des programmes externes et générer des pages Web en réponse aux demandes des utilisateurs. Malgré son importance historique et son utilisation continue dans certains systèmes hérités, le CGI présente des avantages et des inconvénients notables qui ont influencé son remplacement progressif par des technologies plus modernes. Comprendre les avantages et les inconvénients du CGI permet de comprendre son rôle dans l'évolution du développement Web et pourquoi il est désormais largement considéré comme une approche obsolète.

Avantages de CGI

L'interface de passerelle commune a joué un rôle central dans les premiers développements du Web, offrant plusieurs avantages qui en ont fait un choix populaire pour la création d'applications Web dynamiques et interactives. Voici quelques-uns des principaux avantages de l’utilisation de CGI :

  • Simplicité et universalité. CGI est un protocole simple et largement pris en charge, ce qui le rend facile à comprendre et à mettre en œuvre. Presque tout le Web servers prend en charge CGI, garantissant une large compatibilité sans nécessiter de configurations ou de dépendances complexes.
  • Indépendance linguistique. Les scripts CGI peuvent être écrits dans divers langages de programmation, tels que les scripts Perl, Python, C ou Shell. Ce flexLa capacité permet aux développeurs de choisir le langage le mieux adapté à la tâche ou d'exploiter le code existant.
  • Modularité. CGI permet de séparer le contenu Web et server-logique côté. Cette approche modulaire peut faciliter la maintenance et la mise à jour de la logique sans affecter le contenu statique du site Web.
  • La sécurité par l'isolement. Étant donné que chaque requête CGI génère généralement un nouveau processus, ces processus sont isolés les uns des autres et du Web. server. Cela peut limiter l'impact des failles de sécurité potentielles, car un script exploité n'affecte pas directement les autres parties du système. server.
  • Intégration du système existant. CGI est souvent utilisé pour s'interfacer avec des systèmes existants qui nécessitent un mécanisme simple d'interaction avec un site Web. server. Il peut servir de pont, permettant aux anciens et aux nouveaux systèmes de communiquer efficacement.

Défis CGI

Bien que la CGI ait été une technologie pionnière dans le développement de contenu Web dynamique, elle présente plusieurs défis qui ont conduit à son déclin dans le développement Web moderne. Il est essentiel de comprendre ces défis pour évaluer son adéquation dans les environnements Web actuels. Ils comprennent :

  • Surcharge de performances. Chaque requête adressée à un script CGI engendre un nouveau processus, qui consomme beaucoup de ressources et peut entraîner d'importants goulots d'étranglement en termes de performances, en particulier en cas de trafic intense. Cette surcharge de processus de création rend CGI inefficace pour les sites Web à fort trafic ou les applications nécessitant des temps de réponse rapides.
  • Problèmes d'évolutivité. En raison de la surcharge associée à la création de processus, CGI ne s'adapte pas bien à l'augmentation du trafic. À mesure que le nombre d'utilisateurs simultanés augmente, server peut avoir du mal à gérer la charge, ce qui entraîne des performances plus lentes, voire server des accidents.
  • Problèmes de sécurité. Les scripts CGI présentent des risques de sécurité s'ils ne sont pas correctement écrits et configurés. Puisque CGI permet une interaction directe avec le server's le système d'exploitation, des scripts mal conçus peuvent être exploités par des attaquants pour exécuter du code arbitraire, accéder à des données sensibles ou lancer des attaques par déni de service.
  • Manque de persévérance. Chaque exécution de script est sans état, ce qui signifie que toutes les données ou variables utilisées par le script sont perdues une fois le processus terminé. Ce manque de persistance nécessite des mécanismes supplémentaires, tels que gestion de session ou le stockage de base de données, pour maintenir l'état lors de plusieurs interactions utilisateur, ajoutant ainsi de la complexité au développement.
  • Gestion des erreurs et débogage limités. Les scripts CGI peuvent être difficiles à déboguer et à gérer en raison de leur nature sans état. Lorsqu'un script échoue, il peut être difficile de retracer l'erreur jusqu'à sa source, en particulier dans environnements de production où la journalisation et le débogage peuvent être limités.
  • Manque de fonctionnalités modernes. CGI est considéré comme obsolète par rapport aux technologies Web modernes, qui offrent plus de fonctionnalités, de meilleures performances et une plus grande flexbilité. Cadres modernes et server Les architectures fournissent des outils intégrés pour la gestion des sessions, la création de modèles et l'interaction avec les bases de données, qui ne sont pas pris en charge nativement par CGI.

Alternatives d’interface de passerelle commune

CGI reste utile dans certains scénarios existants ou spécifiques à faible trafic, mais pour la plupart des développements Web contemporains, d'autres technologies sont généralement préférées. À mesure que le développement Web a évolué, plusieurs alternatives au CGI ont émergé, répondant à ses limites en termes de performances, d'évolutivité et de sécurité. Voici quelques-unes des alternatives les plus courantes :

  • RapideCGI. FastCGI est une version améliorée de CGI conçue pour résoudre les problèmes de performances associés au CGI traditionnel. Contrairement à CGI, qui génère un nouveau processus pour chaque requête, FastCGI maintient le processus d'application en cours d'exécution, lui permettant de gérer plusieurs requêtes au cours de sa durée de vie. Cela réduit les frais de création et de destruction des processus, conduisant à de meilleures performances et évolutivité. FastCGI prend également en charge l'architecture distribuée, lui permettant de communiquer avec des applications exécutées sur différents servers, améliorant encore l’évolutivité.
  • mod_perl. mod_perl est un Apache HTTP server module qui intègre un interpréteur Perl directement dans le Web server. Cela permet aux scripts Perl de s'exécuter plus rapidement en éliminant le besoin de démarrer un nouveau processus d'interprétation pour chaque requête. mod_perl fournit un outil puissant et flexenvironnement ible pour le développement Web, permettant une intégration profonde avec Apache server. Il permet des connexions persistantes à la base de données, une gestion avancée des requêtes et un accès complet à l'API Apache, ce qui en fait une alternative robuste au CGI pour les applications basées sur Perl.
  • mod_php. Semblable à mod_perl, mod_php est un module Apache qui intègre l'interpréteur PHP directement dans le web server. PHP est un langage de script largement utilisé, conçu spécifiquement pour le développement Web. En exécutant PHP en tant que module dans le server, mod_php élimine la surcharge associée au CGI traditionnel, où un processus distinct est requis pour chaque requête. Cela se traduit par des temps de réponse plus rapides et de meilleures performances, en particulier en cas de trafic élevé. La facilité d'utilisation de PHP et la prise en charge étendue des bibliothèques en ont fait l'une des alternatives les plus populaires à CGI.
  • Servlets Java. servlets Java Ces serverProgrammes Java latéraux qui gèrent les demandes des clients et génèrent du contenu dynamique. Les servlets s'exécutent dans un conteneur de servlets (comme Apache Tomcat) et sont conçus pour être une alternative plus efficace au CGI. Contrairement aux scripts CGI, les servlets sont chargés une seule fois et peuvent gérer plusieurs requêtes au cours de leur durée de vie, réduisant ainsi considérablement la surcharge de performances. Les servlets offrent également des API complètes pour la gestion des sessions, la connectivité des bases de données et d'autres tâches liées au Web, ce qui en fait un outil puissant pour créer des applications Web évolutives au niveau de l'entreprise.
  • ASP.NET. ASP.NET est un framework d'applications Web développé par Microsoft qui permet aux développeurs de créer des sites Web, des applications Web et des services Web dynamiques. ASP.NET s'exécute dans IIS (Internet Information Services) server, et comme les servlets et FastCGI, il évite les pénalités de performances du CGI traditionnel en utilisant un modèle de code compilé et en maintenant l'état de l'application entre les requêtes. ASP.NET fournit un riche ensemble de fonctionnalités pour le développement Web, notamment des formulaires Web, une architecture MVC (Model-View-Controller) et une intégration transparente avec d'autres technologies Microsoft.
  • Node.js Node.js est un moteur d'exécution JavaScript basé sur le moteur JavaScript V8 de Chrome, conçu pour créer des applications réseau évolutives. Node.js utilise un modèle d'E/S non bloquant et piloté par les événements qui le rend léger et efficace, en particulier pour les applications nécessitant un traitement de données en temps réel. Contrairement à CGI, qui gère chaque requête dans un processus distinct, Node.js gère plusieurs requêtes à l'aide d'un seul thread, ce qui peut réduire considérablement les frais généraux et améliorer les performances. Node.js est devenu une alternative populaire au CGI pour créer des applications Web rapides et évolutives.
  • Ruby on Rails. Ruby on Rails (souvent simplement appelé Rails) est un serverCadre d'application Web côté écrit en Ruby. Rails utilise une architecture modèle-vue-contrôleur (MVC) et est connu pour l'accent mis sur les conventions plutôt que sur la configuration, ce qui facilite les débuts dans le développement Web. Les applications Rails s'exécutent généralement sur l'application servers Rails propose également de nombreux outils et bibliothèques intégrés, comme Puma ou Unicorn, qui sont conçus pour gérer plusieurs requêtes simultanément sans la surcharge associée au CGI.
  • Python WSGI (web server interface de passerelle). WSGI est une spécification qui définit comment le Web servers communiquer avec les applications Web Python. WSGI sert d'interface standard entre le Web servers et les frameworks ou applications Python, leur permettant de fonctionner ensemble de manière transparente. Les frameworks Python comme Django et Flask sont basés sur WSGI, ce qui leur permet de fonctionner efficacement sans la surcharge de CGI. WSGI permet le développement d'applications Web évolutives et maintenables en offrant une séparation nette entre le Web server et la logique de l'application.

Anastasie
Spasojevic
Anastazija est une rédactrice de contenu expérimentée avec des connaissances et une passion pour cloud l'informatique, les technologies de l'information et la sécurité en ligne. À phoenixNAP, elle se concentre sur la réponse à des questions brûlantes concernant la garantie de la robustesse et de la sécurité des données pour tous les acteurs du paysage numérique.