Développement Web PDF Gratuit

Cours PDF Scripts CGI : Apprendre à Créer des Pages Dynamiques (Débutant)

Le CGI (Common Gateway Interface) est une interface standardisée permettant à un serveur web d'exécuter des processus externes. Le PDF téléchargeable présente des méthodes pratiques pour créer des pages web dynamiques et interagir avec des bases de données. Auteur : Frédéric Couchet.

🎯 Ce que vous allez apprendre

  • Définition et rôle du Common Gateway Interface : comprendre le modèle client‑serveur et le fonctionnement de l'interface.
  • Pourquoi utiliser les scripts CGI : avantages et cas d'usage pour des traitements côté serveur.
  • Prérequis et choix techniques : compétences et options techniques avant d'écrire des scripts.
  • Installation du serveur Web : configuration d'un serveur HTTP pour exécuter des scripts dans le répertoire cgi-bin.
  • Architecture et flux de données : trajet des données entre navigateur et serveur.
  • Premier programme : écrire, exécuter et déboguer un script simple.
  • Lien avec les SSI (Server Side Includes) pour des inclusions côté serveur sans lancer d'exécutable.

📑 Sommaire du document

  • Introduction
  • Architecture et flux de données CGI
  • Premier programme
  • Saisie et traitement de données
  • Debugger un script CGI
  • Copyright

Installation et configuration du répertoire cgi-bin

Créer un répertoire dédié pour les exécutables facilite la gestion des permissions et l'audibilité. Sur un système Unix, placez les scripts dans /usr/lib/cgi-bin ou un répertoire équivalent et assurez-vous que le répertoire et ses fichiers ont des permissions appropriées. Un réglage courant pour le répertoire est chmod 755 : le propriétaire conserve les droits d'écriture et d'exécution, tandis que le groupe et les autres peuvent lire et exécuter. Des droits excessifs (par exemple 777) exposent le serveur à des risques d'écriture non autorisée.

Configuration du serveur Apache pour le CGI

La configuration d'Apache précise où et comment les scripts peuvent être invoqués. Les directives essentielles associées au répertoire dédié permettent d'autoriser l'exécution tout en limitant les possibilités de modification des fichiers.

Directives Apache essentielles

  • ScriptAlias : associe une URL à un répertoire physique dédié aux programmes.
  • AddHandler cgi-script .cgi .pl : associe les extensions à l'exécution CGI.
  • Options +ExecCGI : autorise l'exécution de scripts dans un répertoire.
# Exemple de configuration minimale
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
AddHandler cgi-script .cgi .pl

    Options +ExecCGI
    AllowOverride None
    Require all granted

Pour approfondir la norme, consultez la RFC 3875 et la documentation officielle d'Apache.

Sécurité et bonnes pratiques des scripts CGI

La sécurité repose sur plusieurs principes : validation stricte des entrées, limitation des privilèges et gestion fine des permissions. Avant tout déploiement, appliquez chmod 755 aux répertoires cgi-bin afin d'empêcher les modifications non autorisées tout en permettant l'exécution. Ne donnez pas d'autorisation d'écriture au groupe ou aux autres pour les scripts exécutables. En complément, écartez l'utilisation d'extensions non nécessaires, contrôlez les accès via le virtual host et limitez les variables d'environnement exposées aux processus.

Validez systématiquement les données utilisateur côté serveur : rejetez ou filtrez les entrées non conformes, évitez les injections de commandes et neutralisez les caractères spéciaux avant toute utilisation dans un appel système ou une requête SQL. Préférez l'exécution sous des comptes à privilèges restreints et appliquez le principe du moindre privilège.

Pourquoi apprendre le CGI aujourd'hui ?

Appréhender l'interface et son modèle d'exécution clarifie le traitement côté serveur et facilite la transition vers des technologies modernes (PHP, Python, frameworks MVC). Cette compréhension est utile pour diagnostiquer des erreurs d'exécution, optimiser le flux de données et concevoir des déploiements sûrs.

Architecture et flux de données CGI

Le cycle d'une requête implique navigateur, serveur web et programme exécuté. Le client envoie une requête HTTP ; si la ressource correspond à un script autorisé, le serveur invoque l'exécutable et fournit des variables d'environnement et, pour les méthodes POST, un flux stdin. Le script renvoie les en-têtes (dont Content-Type) puis le corps de la réponse. Cette logique s'applique à la couche application du modèle OSI, qui gère les protocoles tels que le protocole HTTP.

  • Le navigateur envoie une requête HTTP ; le serveur évalue si la ressource est exécutable.
  • Le serveur transmet au programme les variables d'environnement et éventuellement le flux d'entrée.
  • Le programme écrit les en-têtes puis le corps, renvoyés au client via le serveur web.

Synergie entre CGI et SSI (Server Side Includes)

Les SSI conviennent aux inclusions simples (en-têtes, menus, dates) sans lancer d'exécutable, ce qui réduit la charge CPU. Utilisez les SSI pour les fragments fréquents et les scripts exécutables pour la logique métier ou l'accès aux bases de données. Cette combinaison permet d'équilibrer performance et fonctionnalité.

Langages de programmation pour le CGI

Plusieurs langages conviennent ; le choix dépend des contraintes de performance et de maintenance. Historiquement, l'interprétateur Perl a dominé les tutoriels et exemples pour ce type de scripts, en raison de sa puissance pour le traitement de texte et sa large disponibilité. Les langages interprétés (Perl, Python, Bash) privilégient la facilité de prototypage, tandis que des exécutables compilés offrent parfois un démarrage plus rapide en production.

#!/usr/bin/perl
use strict;
use warnings;
print "Content-Type: text/html\r\n\r\n";
print "

Bonjour

";

Exemple de shebang ci‑dessus : il indique à l'OS l'interprétateur à utiliser pour lancer le script sous Unix.

Les variables d'environnement CGI indispensables

VariableDescription
QUERY_STRINGChaîne de requête après le ? dans l'URL.
REQUEST_METHODMéthode HTTP utilisée (GET, POST, ...).
CONTENT_LENGTHLongueur des données envoyées dans le corps (utile pour POST).
CONTENT_TYPEType MIME des données du corps.
REMOTE_ADDRAdresse IP du client.
SCRIPT_NAMEChemin du script tel que connu du serveur.
PATH_INFOInformations supplémentaires fournies dans l'URL.
SERVER_PROTOCOLVersion du protocole HTTP utilisée.
SERVER_SOFTWAREIdentification du serveur web.

Sécuriser l'exécution des scripts CGI sur Apache

Limiter l'exposition passe par la configuration et les permissions : évitez d'exposer des répertoires contenant des fichiers non vérifiés, appliquez des contrôles d'accès (requêtes par IP, authentification) si nécessaire, et désactivez les handlers d'exécution sur des répertoires publics. Testez les scripts dans un environnement isolé avant mise en production et surveillez les logs serveur pour détecter des comportements anormaux.

👤 À qui s'adresse ce cours ?

Destiné aux débutants ayant des notions de base en HTML et une familiarité minimale avec un langage de programmation (Perl, Python, Bash ou équivalent). Une compréhension du protocole HTTP et de la ligne de commande aide à gérer les permissions et le déploiement sur un serveur web Apache.

Références : RFC 3875 (CGI/1.1), documentation Apache.