Journées pédagogiques de l'ifsic - ENSSAT (Lannion) - 17 juin 2003. Journées pédagogiques de l'ifsic - ENSSAT (Lannion) - 17 juin 2003



Documents pareils
L3 informatique TP n o 2 : Les applications réseau

Protocoles Applicatifs

Protection des protocoles

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Hébergement de sites Web

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Application Web et J2EE

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Architectures web/bases de données

Single Sign-On open source avec CAS (Central Authentication Service)

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

Module BD et sites WEB

Tour d horizon des différents SSO disponibles

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

(structure des entêtes)

Développement des Systèmes d Information

SERVEUR HTTP Administration d apache

Introduction. aux architectures web. de Single Sign-On

Vulnérabilités et sécurisation des applications Web

Programmation Web. Madalina Croitoru IUT Montpellier

Dans l'épisode précédent

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

Hébergement de site web Damien Nouvel

WebSSO, synchronisation et contrôle des accès via LDAP

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

Authentification et contrôle d'accès dans les applications web

2011 Hakim Benameurlaine 1

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

CAS, la théorie. R. Ferrere, S. Layrisse

10. Base de données et Web. OlivierCuré

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Introduction à Sign&go Guide d architecture

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

Authentification unique Eurécia

Serveurs de noms Protocoles HTTP et FTP

Utilisation de l espace personnel (Serveur DATA)

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Vulnérabilités et solutions de sécurisation des applications Web

Développement Web. Les protocoles

Formation en Logiciels Libres. Fiche d inscription

Bases de données et Interfaçage Web

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Manuel d'installation

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Mise en œuvre des serveurs d application

Installation et configuration d Apache sous Linux RedHat 7.1. Pascal AUBRY Ambroise DIASCORN IFSIC Université de Rennes 1

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

Le serveur HTTPd WASD. Jean-François Piéronne

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Single Sign-On open-source avec CAS (Central Authentication Service)

Groupe Eyrolles, 2004 ISBN :

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Zoom sur Newtest LDAP intégration

Perso. SmartCard. Mail distribution. Annuaire LDAP. SmartCard Distribution OCSP. Codes mobiles ActivX Applet. CRLs

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

d authentification SSO et Shibboleth

Plan. Présentation du logiciel Sympa Architecture La gestion des hôtes virtuels Listes avec inclusion des abonnés Les modules d authentification

Introduction à HTTP. Chapitre HTTP 0.9

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Catalogue des Formations Techniques

LAMP : une nouvelle infrastructure LAMP. Une architecture modulaire. Installation

Attaques applicatives

Version Décembre 2005

Le serveur web Windows Home Server 2011

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

UE5A Administration Réseaux LP SIRI

Réseaux. 1 Généralités. E. Jeandel

ADF Reverse Proxy. Thierry DOSTES

Utiliser le portail d accès distant Pour les personnels de l université LYON1

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

SERVEUR WEB LINUX LAMP. Raymond RAZAFIMAMONJY Administration LINUX / UNIX Chapitre 15

Gestion de stock pour un magasin

Informatique & Systèmes de Communication. Stages de 12 à 16 semaines aux Etats-Unis

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

Présentation de la solution Open Source «Vulture» Version 2.0

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Chapitre : Les Protocoles

CAS, un SSO web open source. 14h35-15h25 - La Seine A

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Implémentation libre de Liberty Alliance. Frédéric Péters

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Cours 14. Crypto. 2004, Marc-André Léger

CS REMOTE CARE - WEBDAV

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Web statique : client-serveur. Web et LAMP. Discussion HTTP. Caractéristiques du HTTP

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Sessions en ligne - QuestionPoint

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Transcription:

Exemple de transaction HTTP Délivrer un document statique % telnet www.ifsic.univ-rennes1.fr 80......................connexion au serveur web Trying 148.60.4.30 Connected to apollon.univ-rennes1.fr. Escape character is '^]'. GET /index.html HTTP/1.1...................................... demande de transfert Host: apollon.univ-rennes1.fr............................... nom du serveur From: pa@ifsic.univ-rennes1.fr.............................. adresse demandeur (optionnelle) (ligne blanche = fin de l entête HTTP de la ) HTTP/1.1 200 OK................................................ réponse du serveur Date: Tue, 02 Jun 2001 14:11:17 GMT Server: Apache/1.3b6 Last-Modified: Mon, 07 Apr 2001 10:39:08 GMT............. informations sur la ressource ETag: "b3dd-524-33b78ccc" Content-Length: 1316.......................................... taille de la ressource Accept-Ranges: bytes Content-Type: text/html...................................... type MIME (ligne blanche = fin de l entête HTTP de la réponse) <DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> (contenu) <HTML>. </HTML> Connection closed by foreign host. fermeture de la connexion front-end données de fichiers Web dynamique : qui fait quoi? SSI, XSSI : le premier pas vers la dynamique Le serveur exécute, le client reçoit SSI, XSSI, CGI, FastCGI, PHP, ASP, JSP indépendance vis-à-vis du client (navigateur) interactivité limitée Le serveur envoie, le client exécute JavaScript embarqué (DHTML), Applet Java dépendance vis-à-vis du client plus d interactivité <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head><title>exemple XSSI</title></head> <body bgcolor="#ffffff"> <!--#config errmsg="erreur de syntaxe dans un (x)ssi" --> <!--#set var="x" value="test"--><!--#echo var="x"--><br> Fichier modifié le : <!--#echo var="last_modified" --> <br> Nom du serveur : <!--#echo var="server_name" --> <br> <!--#if expr="$http_user_agent = 'Mozilla/2.0 (compatible; MSIE 3.01; Windows 95)'" --> Il est temps de se mettre à jour! <!--#endif --> </body> </html> CGI : Common Gateway Interface Un standard pour l interface entre applications et serveurs d informations Permet de passer des paramètres aux s dans l URL avec la méthode GET http://serv.dom.org/cgi-bin/script?arg1=val1&arg2=val2 comme des données avec la méthode POST Exécution d un programme sur le serveur Les informations renvoyées au client sont statiques Des s successives permettent le dynamisme Exécution via HTTP d un programme CGI compilé front-end fork, exec exécution terminaison exécutable de fichiers 1

L approche modulaire (PHP, Perl) Java front-end module [interprétation,] exécution Les servlets Programme Java exécuté côté serveur Transformation en byte-code avant exécution Servies par un serveur dédié (ex : Tomcat) [chargement du source] de fichiers JSP (Java Server Pages) Pages HTML avec Java embarqué Transformation en Servlets Le mécanisme JSP ASP front-end JVM test.jar (byte-code) Serveur Servlets test.jsp (HTML/Java) moteur JSP test.java (Java) Tourne nativement sur IIS (MicroSoft) JavaScript ou VBScript ASP.NET (ASP+) : support langages compilés (VB, C++, C#) compilation intermédiaire JS et VBS mécanisme de cache des objets compilés configuration format XML contrôle accru des formulaires Accès aux bases de données amélioré Développement de web services Installation Apprentissage Puissance Portabilité Outils Ressources Une comparaison rapide [Java VB]Script (+ASP) Java (+JSP) Perl (+mod_perl) et subjective! PHP Python (+Zope) Un critère supplémentaire : la sécurité Tous les serveurs ont (eu) des trous de sécurité Déni de service Prise de contrôle Tous les navigateurs ont (eu) des trous de sécurité Liés à Javascript essentiellement Piratage de données (souvent) Déni de service (parfois) On est au courant plus ou moins rapidement Dans le monde du libre : correctifs rapides Ailleurs :? 2

Formulaires HTML Entrées des formulaires HTML Exemple : <form action="prog.php" method="get"> <input type="submit" name="go"> Action : URL cible Method : dans la pratique GET ou POST Boutons d action <input type="submit" name="nom" value="valeur"> <input type="reset" name="nom" value="valeur"> <input type="image" name="nom" src="source"> Entrées textuelles <input type="text" name="nom" value="valeur"> <input type="hidden" name="nom" value="valeur"> <input type="password" name="nom" value="valeur"> Boites de saisie <textarea name="nom" rows="r" cols="c"> texte </textarea> Listes à choix <select [multiple] name="nom"> <option value="valeur">texte</option> </select> Boutons radio <input type="radio" name="nom" value="valeur" [selected] > Boutons à cocher <input type="checkbox" name="nom" value="valeur" [checked] > Exemple Exemple <form action="test_cgi.php" method="get"> Texte :<br> <input type="text" name="texte_court" value="blabla"><hr> Sélection simple :<br> <select name="sel_simple"> <option value="1">choix 1</option> <option value="2">choix 2</option> <option value="3">choix 3</option> </select><hr> Sélection multiple :<br> <select multiple name="sel_multiple[]"> <option value="1">choix 1</option> <option value="2">choix 2</option> <option value="3">choix 3</option> </select><hr> <input type="reset" name="bouton_reset" value="annuler"> <input type="submit" name="bouton_submit" value="valider"> <input type="text" name="texte_court" value="blabla"> <select name="sel_simple"> <option value="1">choix 1</option> <option value="2">choix 2</option> <option value="3">choix 3</option> </select> <select multiple name="sel_multiple[]"> <option value="1">choix 1</option> <option value="2">choix 2</option> <option value="3">choix 3</option> </select> <input type="reset" name="bouton_reset" value="annuler"> <input type="submit" name="bouton_submit" value="valider"> 'texte_court' => "blabla" 'sel_simple' => "2" 'sel_multiple' => { [0] => "1", [1] => "3" } 'bouton_submit' => "Valider" Redirection sous HTTP Les cookies GET /ancien HTTP/1.1 client erreur 30x HTTP/1.1 301 Moved permanently Location: /nouveau serveur Ce sont des lignes particulières de l entête HTTP qui permettent de véhiculer des informations entre client et serveur réponse GET /nouveau HTTP/1.1 nouvelle code 200 HTTP/1.1 200 OK <html> </html> Caractéristiques : nom (UTILISATEUR) valeur (Pascal.Aubry) date de validité (Sunday, 04-Nov-01 23:12:40 GMT) domaine/serveur (www.zappeur.com) chemin (/public) 3

Les cookies GET /rep/fichier.html HTTP/1.1 HTTP/1.1 200 OK Set-Cookie: h_cookie=00; \ path=/rep/; \ expires=friday, 09-Nov-01 05:23:12 GMT Les cookies (limitations) client réponse GET /rep/fichier2.html HTTP/1.1 Cookie: h_cookie=00 réponse serveur La taille 4Ko par cookie Le nombre 300 cookies par navigateur 20 cookies par serveur (pour un même client) Les clients peuvent «refuser» des cookies Transmettre des variables d état Solution 1 : paramètres CGI cachés Objectif : propager des variables entre les s identité du visiteur informations de connexion Le problème HTTP est un protocole sans état Les solutions paramètres CGI cachés cookies sessions Dans chaque formulaire et chaque lien hypertexte, on ajoute un (des) paramètre(s) caché(s) : <form > <input type="hidden" name="ident" value="durand"> <input type="hidden" name="pass" value="xx98yy"> <a href="action.php?ident=durand&pass=xx98yy">texte</a> Problèmes : Les liens hypertextes et les grosses variables d état on transmet toutes les variables d état à chaque ça marche, mais ça va bien un moment ;-) Solution 2 : cookies Solution 3 : les sessions À chaque changement d une variable d état, on envoie un cookie au client qui pourra nous le renvoyer lors de la suivante Intérêts : on ne transmet les variables que lorsqu elles changent on ne fait pas de ré-écriture des formulaires et des liens Problèmes : nombre et longueur des cookies il faut encore le faire «à la main» certains ne supportent pas les cookies Affectation d un ID unique pour chaque visiteur non connu (sans ID) de forme aléatoire Liaison (identifiant - données sur le serveur) stockage mémoire, disque, base de données, format propriétaire, XML (WDDX), Transmission de l identifiant par cookie, ré-écriture (automatique) 4

Transmission des IDs de session Sécurité et CGI Ré-écriture automatique : <form > <input type="hidden" name="sess_id" value="5kj81l12yhs3"> <a href="? &SESS_ID=5kj81l12yhs3"> <img src="? &SESS_ID=5kj81l12yhs3"> <frame src="? &SESS_ID=5kj81l12yhs3"> Tout ce qui provient de l utilisateur doit être considéré comme suspect : URL Il ne suffit pas de protéger le point d entrée d une application Paramètres CGI L utilisateur ne passe pas forcément par un formulaire de l application Cookies Ils peuvent être «trafiqués» Fichiers téléchargés Leur contenu est a priori quelconque Certificats X509 S appuyer sur une autorité de confiance et une liste de révocation Sécurité et CGI : exemple Sécurité et CGI <form > <input type="text" name="cle"> <input type="submit" name="go" value="chercher"> Rappel : tout ce qui provient de l utilisateur doit être considéré comme suspect $req_sql = "SELECT DesChamps FROM UneTable WHERE cle = '$cle' "; J essaierai bien la clé suivante : 4' ; SELECT * FROM ; DROP DATABASE ; SELECT '1 Il existe des solutions $req_sql = " SELECT DesChamps FROM UneTable WHERE cle = '". Addslashes($cle)."'" ; Le chiffrement de HTTP (HTTPS) Chiffrement symétrique SSL : Secured Socket Layout HTTPS : HTTP sur SSL Objectifs de HTTPS : crypter les communications identifier le serveur HTTP SLL TCP/IP HTTPS le serveur auquel je suis connecté est-il le bon? Identifier le client la personne qui se connecte au serveur est-elle la bonne? Certificats (X509) Chiffrement : f (message, clé) = message_chiffré Déchiffrement : f (message_chiffré,clé) = message 5

Chiffrement symétrique Chiffrement asymétrique Avantages : Une seule clé pour chiffrer/déchiffrer Algorithme de chiffrement léger Inconvénient : Comment se passer la clé? Chiffrement : f (message, clé_pub) = message_chiffré Déchiffrement : f (message_chiffré,clé_pri) = message Communication chiffrée asymétrique La solution On utilise un chiffrement asymétrique pour se communiquer une clé symétrique Inconvénient : L algorithme de chiffrement/déchiffrement est lourd On communique ensuite avec un chiffrement symétrique génération aléatoire La solution Passage de la clé avec chiffrement asymétrique La signature Être sûr que la personne/machine avec laquelle on communique est bien la bonne Chiffrement symétrique Être sûr que les données reçues sont bien celles qui ont été envoyées (intégrité) 6

La signature (fonctionnement) L authentification sur le web hachage Quelle information d authentification utilise-t-on? Comment transporte-t-on les informations? chiffrement asymétrique envoi hachage déchiffrement asymétrique comparaison Qui vérifie les informations? Par rapport à quoi les vérifie-t-on? Quelles informations d authentification utiliser? Comment transporte-t-on les informations d authentification? Un couple user/password Méthode traditonnelle Attention à son transport et à son utilisation! Est-ce bien nécessaire? Un jeton opaque Rejouable ou non rejouable Limité ou illimité dans le temps Pour une gestion de session ou une authentification externalisée Un certificat X509 Sous HTTP Par le protocole HTTP (royaumes) Codage base64 => non sûr Par paramètre CGI Pas de chiffrement => non sûr Log possible avec la méthode GET Par cookie Pas de chiffrement => non sûr Piratage possible sur le client Par certificat personnel X509 Sous HTTPS Tout est bon Qui vérifie les informations d authentification? Le (le serveur web) Ou un de ses modules mod_ssl, mod_auth_ldap, mod_auth_dbm, mod_auth_mysql, Authentification gérée par l administrateur Peut être déléguée aux développeurs (.htaccess) L application elle-même L application a en général accès aux informations d authentification (royaumes HTTP, paramètres CGI, cookies, certificats X509) Par rapport à quoi vérifie-t-on l authentification? Annuaire LDAP (ex : mod_auth_ldap) Fichier Séquentiel (ex : mod_auth_digest) Format DBM (ex : mod_auth_dbm) Base de données Ex : mod_auth_mysql Codage «en dur» dans l application if ( ($_SERVER["PHP_AUTH_USER"]!= "titi") ($_SERVER["PHP_AUTH_PW"]!= "toto") ) { header('www-authenticate: Basic realm="zappeur"'); header("http/1.0 401 Unauthorized"); echo "Vous n êtes pas autorisé\n" ; exit ; } 7

Exemple 1 Exemple 1 HTTP/1.1 401 Unauthorized GET /prive/index.html HTTP/1.1 WWW-Authenticate: Basic realm="private zone" Vous n êtes pas autorisé Mise à jour des pages web de l IFSIC Protocole : HTTP (en fait webdav) Informations : user/password Transport : royaume HTTP Vérification : serveur web Référence : fichiers de mots de passe client erreur 401 httpd.conf nouvelle <Directory "/var/www/html/prive"> AuthType Basic AuthUserFile /etc/prive.users AuthName "private zone" require valid-user </Directory> serveur Exemple 1 Exemple 2 GET /prive/index.html HTTP/1.1 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="private zone" Vous n êtes pas autorisé client réponse GET /prive/index.html HTTP/1.1 Authorization: Basic dg90bzp0axrp nouvelle erreur 401 code 200 (ou 401) serveur HTTP/1.1 200 OK <html> </html> Le Helpdesk de l IFSIC Protocole : HTTPS Informations : certificats personnels Transport : SSL Vérification : application PHP Référence : liste «en dur» des administrateurs Besoin de SSO Les acteurs du marché Un seul mot de passe : un objectif en général atteint Par synchronisation des modes Unix et Windows Par utilisation d un annuaire unique (LDAP) Risque accru au niveau sécurité Plusieurs authentifications Une par d exploitation Une par application Différents mécanismes LDAP, PDC, NIS, certificats X509, Abstraction nécessaire D autres problématiques encore Aspects multi-établissements (inter-opérabilité) Gestion d autorisations MicroSoft Passport Solution centralisée Sun Liberty Alliance Plus un standard qu une implémentation De nombreux industriels impliqués Solution répartie (relations de confiance) Yale CAS La solution libre émergente Adoptée par ESUP-Portail 8