1 / 10

PHP

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 :

lark
Download Presentation

PHP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP Traitements

  2. 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é !

  3. Exemple de bug • Imaginons 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 :

  4. Exemple de bug • Imaginons ensuite que l’on affiche la couleur saisie : <?phpprint("Votre couleur est :".$_POST['color']); ?> • Normalement, on ne pourra avoir que : • Votre couleur est red • Votre couleur est green • Votre couleur est blue • Mais…

  5. Exemple de bug • Imaginez 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… • Pire : il peut insérer des balises HTML pour faire changer de pages • Grâce au javascript : <script> document.location = 'http://evil.example.org/'; </script>

  6. Conclusion • Il 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

  7. Vérifications des valeurs • Utiliser les fonctions toutes faites, c’est le minimum ! • Htmlspecialchars($var) : $new = htmlspecialchars("<a href='test'>Test</a>");print $new; // &lt;ahref=&#039;test&#039;&gt;Test&lt;/a&gt; • 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>

  8. Vérification des valeurs • Faire 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("&lt;", "&gt;"); print$newphrase= str_replace($balises,$codeBalises,$phrase); // Génère : &lt;b&gt;Titi&lt;/b&gt;&lt;i&gt;Lelore&lt;i&gt;&lt;h1&gt;Prof&lt;/h1&gt;

  9. Vérification des valeurs • Faire 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) : printsubstr('abcdef', 1,20);  // bcdefprintsubstr('abcdef', 1, 3);  // bcdprintsubstr('abcdef', 0, 4);  // abcd

  10. Finalement Pour être sûr de ne pas avoir de problè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 !

More Related