Upload
lark
View
31
Download
0
Embed Size (px)
DESCRIPTION
PHP. Traitements. Les dangers du PHP. Simple au premier abord Pas de typage Principe pas compliqué Page internet testée pas beaucoup de monde Utilisateur confirmés (hackeurs) Le moindre bug peut être exploité. !. Exemple de bug. Imaginons le formulaire suivant : - PowerPoint PPT Presentation
Citation preview
Traitements
1
Les dangers du PHPSimple au premier abord
Pas de typagePrincipe pas compliqué
Page internet testée pas beaucoup de mondeUtilisateur confirmés (hackeurs)
Le moindre bug peut être exploité
2
!!
Exemple de bugImaginons le formulaire suivant :
<form action="/process.php" method="POST">
<select name="color">
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<input type="submit" />
</form>
Il doit produire l’affichage suivant :
3
Exemple de bugImaginons ensuite que l’on affiche la couleur
saisie :<?php print("Votre couleur est :".$_POST['color']); ?>
Normalement, on ne pourra avoir que : Votre couleur est redVotre couleur est red Votre couleur est greenVotre couleur est green Votre couleur est blueVotre couleur est blue
Mais…
4
Exemple de bugImaginez qu’un attaquant modifie le
formulaire :<form action=" http://example.org/process.php" method="POST">< input type="text" name="color"><input type="submit" /></form>
Il peut alors envoyer n’importe quelle couleur…
PirePire : il peut insérer des balises HTML pour faire changer de pagesGrâce au javascript :<script><script>document.location = 'http://evil.example.org/';document.location = 'http://evil.example.org/';</script></script>
5
ConclusionIl existe une multitude de risque
Beaucoup d’autre « bugs »Il existe beaucoup de « petits malins »
Le hacking attire beaucoup !On est jamais trop prudent
Toujours vérifier ce que l’on reçoit
6
Vérifications des valeursUtiliser les fonctions toutes faites, c’est le
minimum !Htmlspecialchars($var) :
$new = htmlspecialchars("<a href='test'>Test</a>");print $new; // <a href='test'>Test</a>
strip_tags ($var,"<p><b>…") :$new = strip_tags("<b>Test</b>","");print $new; // {vide}
$new = strip_tags("<b>Test</b><i>toto</i>","<b>");
print $new; // <b>Test</b>7
Vérification des valeursFaire ses propre fonctions, en utilisant :
str_replace($what,$with,$phrase) :$voyelles = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
print $consonnes = str_replace($voyelles, "", "Bonjour le monde"); // Génère : Bnjr l mnd
$phrase = "Vous devriez manger des fruits et des légumes les jours.";$regime = array("fruits", "légumes");$bonne_chere = array("pizzas", "gâteaux"); print $newphrase = str_replace($regime, $bonne_chere, $phrase);
// Génère : Vous devriez manger des pizzas et des gâteaux tous les jours.
$phrase = "<b>Titi</b><i>Lelore<i><h1>Prof</h1>";$balises = array("<", ">");$codeBalises = array("<", ">"); print $newphrase = str_replace($balises, $codeBalises, $phrase);
// Génère : <b>Titi</b><i>Lelore<i><h1>Prof</h1>
8
Vérification des valeursFaire ses propre fonctions, en utilisant :
strcmp($phrase1,$phrase2) : Retourne < 0 si $phrase1 est inférieure à $phrase2;
Retourne > 0 si $phrase1 est supérieure à $phrase2,
Retourne 0 si les deux chaînes sont égales.substr($phrase,$debut,$longueur) :
print substr('abcdef', 1,20); // bcdefprint substr('abcdef', 1, 3); // bcdprint substr('abcdef', 0, 4); // abcd
9
Finalement
Pour être sûr de ne pas avoir de problèmesproblèmes (récupération de mots de passe…), il faut toujours filtrer les valeurs reçues de formulaires, même ceux qui paraissent sans importance !
10