</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 ... <html><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, &$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