.
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>
-    <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">
-      <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>
        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
          <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>
        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>
+    <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>
     <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>
        <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