La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programmation CGI Common Gateway Interface Julien FAURE - Fabien FONTVIEILLE - Nicolas HERRERO.

Présentations similaires


Présentation au sujet: "Programmation CGI Common Gateway Interface Julien FAURE - Fabien FONTVIEILLE - Nicolas HERRERO."— Transcription de la présentation:

1 Programmation CGI Common Gateway Interface Julien FAURE - Fabien FONTVIEILLE - Nicolas HERRERO

2 La Programmation CGI  Principe Général  Traitement des informations  Sécurité et CGI

3 La Programmation CGI Section I Principe Général des CGI

4 Intérêt des CGI  Modification dynamique de page web (page non statique) Norme CGI  Interface entre une application et un serveur (donnée -> HTML)  Script CGI : programme exécutable avec des droits : r-xr-xr-x  Exécuté par le serveur (Web) dans un répertoire spécifique  Transparent pour les utilisateurs  Programmé en différents langages (Perl, C/C++, Shell Unix,...) Description Générale

5 Exemple en Perl scriptcgi.pl : exécution automatique #!/usr/bin/perl print "Content-type:text/html\n\n"; # sortie de type text/html print <

6 #include main() { printf ("Content-type:text/html\n\n"); printf(" Script CGI \n"); printf(" \n"); printf("Salut à tous voici le résultat d’un script CGI\n"); printf(" \n"); } Exemple en C scriptcgi : doit être compilé

7 Exemple Appel des CGI :

8 Utilisation des CGI :  Traitement de formulaire  Webmails, chat  Interrogation de BDD  Compteurs, Livre d ’Or,... Description Générale

9 UtilisateurServeurCGI Requête URL Traitement des données Charge le formulaire Complète puis validation Réception des données Interaction Formulaire et CGI

10 La Programmation CGI Section II Traitement des Informations

11 Appel des CGI  Lien appel CGI  Image  SSI (Server Side Includes)  Formulaires

12 Les Formulaires HTML

13

14 Les méthodes POST et GET  Méthode GET Réception des données : Variable d’environnement QUERY_STRING Pas de données trop importantes ni trop confidentielles Arguments passés dans l’URL (1024 caractères maximum)  Méthode POST Données transmises via l’entrée standard (STDIN) Taille des données dans la variable CONTENT_LENGTH  Dans les 2 cas Données transmises au format URL-encoded (les espaces sont remplacés par des +, les ~ par %7E … ) Nécessité d’une « moulinette » pour retrouver les bons caractères

15 Le CGI en C

16 Exécution avec la méthode GET

17 Exécution avec la méthode POST

18 Remarques  Les bibliothèques On peut utiliser des bibliothèques existantes pour faciliter le traitement exemple en C : avec la bibliothèque cgi-util char name[1024]; cgiinit(); getentry(name, “Name“);  Les variables d’environnement QUERY_STRING, REQUEST_METHOD, CONTENT_LENGTH HTTP_REFERER : URL de la source REMOTE_ADDR :IP du client HTTP_USER_AGENT :Signature du navigateur …

19 La Programmation CGI Section III Sécurité et CGI

20 Les Dangers des CGI  Risques de « plantage » du serveur Appel en boucle d’un CGI en vue de faire monter la charge système ou envoi d’une trop grande quantité de données.  Risques d’intrusion Exécution d’une commande non voulue sur le serveur permettant de détruire le système ou de voler des fichiers confidentiels (/etc/password)

21 Les Risques de Plantage  Attaques de type DOS ( Denial Of Service ) Le pirate cherche à rendre inactif le système, à le faire « crasher » en occupant toutes les ressources mémoire ou CPU du serveur.  Problème de BUFFER OVERFLOW La taille des données envoyées est supérieure à celle de la variable utilisée dans le script pour les stocker.

22 Les Risques de Vol d’informations  Un script CGI mal écrit peut permettre à une personne malveillante d’accéder à certains fichiers sensibles.  Le pirate peut récupérer les mots de passe utilisateurs par le biais du fichier /etc/passwd, il y a perte de confidentialité.  Le cracker peut modifier le code de manière à pouvoir exécuter d’autres commandes.

23 Stratégie et Solutions de Sécurité Une des principales stratégie à adopter peut se résumer en une brève maxime: Ne faites jamais confiance aux données fournies par l’utilisateur. Les problèmes de sécurité surviennent lorsque des suppositions sont faîtes sur les données et sur les utilisateurs qui ne font jamais ce qui est attendu, de façon volontaire ou involontaire. Pour sécuriser un script CGI, il faut faire preuve de créativité en imaginant tous les cas possibles.

24 Réduire les Risques de Plantage Il faut vérifier la validité des informations reçues du client.  Origine des données Il faut s’assurer grâce à la variable d’environnement HTTP_REFERER que la requête vient bien du site web et non d ’une autre adresse.  Cohérence des données Il faut vérifier la taille des entrées avant tout traitement ce qui permettra de refuser le traitement si la taille excède celle attendue.

25 Réduire les Risques d’Intrusion  Au niveau du programme CGI L’utilisateur et le groupe auxquels de programme CGI appartient doivent avoir des droits limités. ex : utilisateur nobody Le programme CGI ne doit pas être accessible en écriture, afin d’empêcher un éventuel pirate de lui ajouter du code, ce qui reviendrais à lui laisser un accès au shell du serveur. droits : 555 (r-x r-x r-x) …soit lecture et exécution pour tous, écriture impossible

26 Réduire les Risques d’Intrusion  Au niveau du répertoire Le répertoire dans lequel sont stockés les CGI (cgi-bin) ne doit pas être accessible en écriture par n’importe qui afin d’empêcher qu’un pirate n’ajoute un script malveillant sur le serveur.  Au niveau des fichiers de données Les fichiers de données dans lesquels le CGI peut écrire ne doivent être accessible en écriture que par le propriétaire du CGI. droits 644 (rw- r- - r- -) …soit lecture et écriture pour le propriétaire et lecture seule pour les autres

27 Remarques  Importance du langage de programmation Les CGI compilés (langages C,C++…) sont plus sûrs car l’accès aux sources est plus compliqué, voir impossible. Les CGI interprétés (langage Perl, scripts shell …) sont plus vulnérables, et consomment plus de ressources.  Un serveur Web n’est pas un serveur d’applications Les CGI ne doivent pas réaliser directement des traitements lourds. Il faut déléguer ces tâches au serveur d’applications afin de préserver les ressources du serveur Web.

28 La Programmation CGI En Conclusion …

29 La Programmation CGI  Un outil puissant, mais complexe  Des risques non négligeables  Les alternatives : ASP, PHP, JSP…


Télécharger ppt "Programmation CGI Common Gateway Interface Julien FAURE - Fabien FONTVIEILLE - Nicolas HERRERO."

Présentations similaires


Annonces Google