La Programmation CGI Principe Général Traitement des informations

Slides:



Advertisements
Présentations similaires
UNIX Pour débutant. Applications En directNavigateurCourrierMode consoleFenêtrage http smtp ssh X protocoles - langages de programmation protocoles -
Advertisements

TER Gestionnaires de contenu en ligne
12/10/2000Cédric Bertho - Comparaison entre Perl et Python1 vs Comparaison.
L’architecture .net et ASP.net
Introduction Aux Systèmes dInformation et Multimédia T. Bourdeaudhuy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007 ASP / Pages Web Statiques.
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
Utilisation de l’outil Firebug
Objectifs Présentation et utilisation du langage PERL
HTML Les types de balises
Web dynamique : solutions Sessions sous HTTP
TP 3-4 BD21.
10:59:29 Programmation Web Programmation Web : PHP Jérôme CUTRONA
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
Architecture de machines Principes généraux
16/10/10 Préparé par: Ing. Rodrigue Osirus (+509) , *** Site web dynamique.
Introduction aux CMS.
Unix Raymond Ripp.
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
2006/2007Denis Cabasson – Programmation Web Cours de programmation web ENSAE
CPI/BTS 2 Programmation Web Introduction au PHP
Architecture Les Couches Présentation Services Métier
Comprendre l’environnement Web
Module : Technologies des serveurs réseaux : Webmin
Stéphane Frénot1INT - 4 Internet/Intranet Les architectures.
Atelier « Créations de sites » : Les techniques de réalisation de sites EPN :...
Techniques d’administration [BTS IRIS tv
Les langages de scriptage Insertion des scripts Javascript ou VBscript.
Les langages majeurs du Web dynamique
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Olivier Nocent Programmation Web Olivier Nocent
Les Serveurs WEB.
LAL Service Informatique Stage Informatique 1 Le système Unix l Multitâche, multi-utilisateur, partage des ressources l Universel : machines, portabilité.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
PHP & My SQL.
FORMATION Unix/Linux CHAPITRE 1: LES PREMIERS PAS.
Module I-C3 : Applications Web IUT R&T 2e année
UTILISATION DE LINUX. LINUX 2 UTILISATION DE LINUX Différences Windows-Linux Le prix La licence Le choix des distributions Les applications Les utilisateurs.
PROGRAMMATION WEB FRONT-END.
Etude comparative JSP, ASP et PHP
KRIKORIAN Pierre HILMI Brahim
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
T ECHNOLOGIES WEB CHAPITRE IV : L E LANGAGE PHP 1 Mme Amani JARRAYA & Mohamed MOHSEN.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
WebÉducation – 10 Juin 2004 Jonathan Dumas
Architecture d’application CNAM Le mode Client/Serveur Le programme n’a besoin d’être compatible qu’avec l’ordinateur sur lequel il est installé.
Unix Raymond Ripp.
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
Conception du site web d’un tribunal Me Patrick Cormier B.Sc., LL.B./B.C.L., CD.
Architecture d’une application WEB Statique:
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Serveur HTTP. Responsable : Yohan VALETTE Objectifs : Créer un intranet sécurisé pour nos utilisateurs (pour la mise en commun de connaissances, par exemple).
Module : Pages Web Dynamiques (Production Électronique Avancée)
Programmation Web : PHP
Programmation Web : PHP
Initiation au JavaScript
Sites Web interactifs 2010 / 2011 / S1 Bernhard Rieder.
Deug 11 Systèmes d ’Information : 5a Michel de Rougemont Université Paris II Les Formulaires.
Centralisation des sites web d’ELTA & Mise en place d’un serveur NAS
1 Wikiman DRUANT Grégoire ZEKRI Mohamed Juin 2006 Encadré par : Mr Eric Piel.
Commerce électronique Une application « MUSIQUE » Sur le site edicom Recherche et commande de disques CD ( titres)
Séance /10/2005 CSS et Dreamweaver. CSS : principes Cascading Style Sheet = feuille de style en cascade Norme du W3C :
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Principes et variables
Initiation au langage Perl Emmanuel Grenados Corp I&T / TE September 16th, 2008.
Conception des Sites Web Enseignant : Pr Boubker Sbihi Année
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Systèmes d ’Information : 6a
Transcription de la présentation:

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

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

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

Description Générale 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, ...)

Exemple en Perl scriptcgi.pl : exécution automatique #!/usr/bin/perl print "Content-type:text/html\n\n"; # sortie de type text/html print <<EOF; # ligne libre obligatoire (\n\n) <HTML> <HEAD><TITLE>Script CGI</TITLE></HEAD> <BODY BGCOLOR=\"#FFFFFF\"> <BR><BR><BR><BR> <CENTER> <H1> Salut à tous<p>voici le résultat d’un script CGI </H1> </CENTER> </BODY> </HTML> EOF

Exemple en C scriptcgi : doit être compilé #include <stdio.h> main() { printf ("Content-type:text/html\n\n"); printf("<HTML><HEAD><TITLE>Script CGI</TITLE></HEAD>\n"); printf("<BODY BGCOLOR=\"#FFFFFF\">\n"); printf("<BR><BR><BR><BR>\n"); printf("<CENTER><H1>\n"); printf("Salut à tous<p>voici le résultat d’un script CGI\n"); printf("</H1></CENTER>\n"); printf("</BODY>\n"); printf("</HTML>\n"); }

Exemple Appel des CGI : http://www.nomdomaine.com/cgi-bin/scriptcgi.pl http://www.nomdomaine.com/cgi-bin/scriptcgi

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

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

Section II Traitement des Informations La Programmation CGI Section II Traitement des Informations

Appel des CGI Lien <A HREF=“/cgi-bin/monscript.cgi“> appel CGI </A> Image <IMG SRC=“/cgi-bin/compteur.cgi“> SSI (Server Side Includes) <!--#exec cgi= “/cgi-bin/compteur.cgi“--> <!--#include virtual= “/cgi-bin/monscript.cgi“--> Formulaires <FORM ACTION=“/cgi-bin/monscript.cgi“ METHOD= “get“>

Les Formulaires HTML

Les Formulaires HTML

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

Le CGI en C

Exécution avec la méthode GET

Exécution avec la méthode POST

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 …

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

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)

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.

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.

Ne faites jamais confiance aux données fournies par l’utilisateur. 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.

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.

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

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

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.

La Programmation CGI En Conclusion …

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