.
authorKim Nguyễn <kn@lri.fr>
Tue, 25 Nov 2014 10:29:54 +0000 (11:29 +0100)
committerKim Nguyễn <kn@lri.fr>
Tue, 25 Nov 2014 10:29:54 +0000 (11:29 +0100)
unix_prog_web/unix_prog_web_09.xhtml

index d2166a9..c5267ae 100644 (file)
@@ -36,9 +36,9 @@
     </script>
   </head>
   <body>
     </script>
   </head>
   <body>
-    <a href="prog_internet_08.xhtml" class="sws-previous"/>
+    <a href="unix_prog_web_08.xhtml" class="sws-previous"/>
     <div class="sws-slide sws-cover sws-option-nofooter">
     <div class="sws-slide sws-cover sws-option-nofooter">
-      <h1>Programmation Internet</h1>
+      <h1>Unix et Programmation Web</h1>
       <h1>Cours 9</h1>
       <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
       <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
       <h1>Cours 9</h1>
       <a href="mailto:kn@lri.fr">kn@lri.fr</a><br/>
       <a href="http://www.lri.fr/~kn/">http://www.lri.fr/~kn</a>
        les clés <s>au départ</s> est bien Bob ?
       </p>
     </div>
        les clés <s>au départ</s> est bien Bob ?
       </p>
     </div>
+    <div class="sws-slide">
+      <h1>Une analogie</h1>
+      <p>La cryptographie assymétrique fonctionne exactement comme
+      l'analogie de la boîte aux
+      lettres. Pourquoi ?
+      </p>
+      <ul class="sws-pause">
+       <li>La clé publique est la boîte aux lettres</li>
+       <li>La clé privée est la clé de la boîte aux lettres</li>
+       <li>Tout le monde peut «crypter» un message en le glissant
+       dans ma boîte aux lettres</li>
+       <li>Une fois le message crypté (<i>i.e.</i> dans la boîte) il
+       est difficile de le récupérer sans avoir la clé</li>
+       <li>Il est facile pour moi d'ouvrir la boîte avec ma clé</li>
+      </ul>
 
 
+    </div>
     <div class="sws-slide">
       <h1>HTTP: protocole texte « en clair »</h1>
       <p>HTTP est un protocole <em>texte</em>, les données ne sont
     <div class="sws-slide">
       <h1>HTTP: protocole texte « en clair »</h1>
       <p>HTTP est un protocole <em>texte</em>, les données ne sont
          <li>Mallory peut retransmettre les requêtes entre Bob et
            Alice, en les modifiant au passage. Le problème est causé
            par un manque d'authentification (Mallory n'a pas a
          <li>Mallory peut retransmettre les requêtes entre Bob et
            Alice, en les modifiant au passage. Le problème est causé
            par un manque d'authentification (Mallory n'a pas a
-           prouver à Alice qu'il est Bob)
+           <em>prouver</em> à Alice qu'il est Bob)
          </li>
 </ol>
     </div>
          </li>
 </ol>
     </div>
        IP (application). On peut donc avoir connaissance du nombre de
        paquet échangés, des adresses IP des participants, la taille
        et la fréquence des paquets… (même si on n'en connait pas le
        IP (application). On peut donc avoir connaissance du nombre de
        paquet échangés, des adresses IP des participants, la taille
        et la fréquence des paquets… (même si on n'en connait pas le
-       contenu). Cela permet certaines attaques statisties ou de deni
-       de service.
+       contenu). Cela permet certaines attaques statistiques ou de deni
+       de service (DoS).
       </p>
     </div>
       </p>
     </div>
+    <div class="sws-slide">
+      <h1>Bug dans HTTPS: <i>Heartblead</i></h1>
+      <p><i>Heartblead</i> est un bug découvert en 2014 dans la
+       bibliothèque OpenSSL (Bibliothèque qui implémente toutes les
+       primitives cryptographiques de bas niveau nécessaire à HTTPS,
+       entre-autres, et utilisée par tout le monde). Cette attaque
+       touche la partie <i>heartbeat</i> du
+       protocole. Le <i>heartbeat</i> est un message périodique
+       envoyé par le client au serveur pour lui demander si la
+       connexion/session est toujours active (ou pour lui signaler de
+       ne pas la fermer).
+      </p>
+      <ul>
+       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond 'Bonjour' (6
+       lettres)</li>
+       <li class="sws-pause">Bonjour</li>
+       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond
+       'Je suis là' (10 lettres)</li>
+       <li class="sws-pause">Je suis là</li>
+       <li class="sws-pause">Serveur, es-tu vivant ? si oui répond
+       'Oui' (1024 lettres)</li>
+       <li class="sws-pause">Oui<span class="sws-pause"
+       style="color:gray;"><tt>....Serveur, je suis l'admin, modifie le
+       mot de passe à '1023hasd834!' ... Tiens, autre client, je
+       t'envoie la page que tu m'as demandée ... &lt;html&gt;&lt;body ....</tt></span></li>
+      </ul>
+    </div>
     <h1>Confidentialité, traîtement des <i>cookies</i></h1>
     <div class="sws-slide">
       <h1>Traçage par cookies</h1>
     <h1>Confidentialité, traîtement des <i>cookies</i></h1>
     <div class="sws-slide">
       <h1>Traçage par cookies</h1>
     <div class="sws-slide">
       <h1>Injection de code PHP</h1>
       <p><s>Problème</s> lié à l'utilisation de la fonction
     <div class="sws-slide">
       <h1>Injection de code PHP</h1>
       <p><s>Problème</s> lié à l'utilisation de la fonction
-       <code>                    <s>eval</s>(command)</code>
-       <tt><em>command</em></tt> est une chaîne de caractères
+       <code>                    <s>eval</s>($code)</code>
+       <tt><em>$code</em></tt> est une chaîne de caractères
        considérée comme étant du code PHP et <tt>eval</tt> exécute
        cette chaîne:
       </p>
        considérée comme étant du code PHP et <tt>eval</tt> exécute
        cette chaîne:
       </p>
        <li>Toujours valider les entrées d'un utilisateur</li>
       </ul>
     </div>
        <li>Toujours valider les entrées d'un utilisateur</li>
       </ul>
     </div>
+    <div class="sws-slide">
+      <h1>Injection de code SHELL (en PHP)</h1>
+      <p><s>Problème</s> lié à l'utilisation de la fonction
+       <code>                    <s>exec</s>($command, &amp;$output)</code>
+       Cette fonction exécute dans un SHELL la
+       commande <tt>$command</tt>. Les lignes de la sortie standard
+       de la commande sont placées dans le table <tt>$output</tt>
+       passé en référence. (Démo avec <tt>unzip -l</tt>).<br/>
+       Solutions:
+      </p>
+      <ul>
+       <li>Ne jamais passer à exec directement une chaîne crée par
+       l'utilisateur</li>
+       <li>Recréer sois-même la chaîne de caractères, échapper les
+       caractères spéciaux et remettre le tout dans une chaîne pour
+       éviter les expansions du SHELL</li>
+       <li>Utiliser des fonctions de la bibliothèque standar quand
+       elle existes (par exemple <tt>rename</tt> plutot
+       que <tt>exec('mv ...')</tt>).</li>
+      </ul>
+    </div>
     <div class="sws-slide">
       <h1>Injection de code SQL</h1>
       <p>SQL: language de requête permettant d'interroger des bases de
     <div class="sws-slide">
       <h1>Injection de code SQL</h1>
       <p>SQL: language de requête permettant d'interroger des bases de