10
Traitements 1

PHP

  • 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

Page 1: PHP

Traitements

1

Page 2: PHP

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

!!

Page 3: PHP

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

Page 4: PHP

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

Page 5: PHP

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

Page 6: PHP

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

Page 7: PHP

Vérifications des valeursUtiliser les fonctions toutes faites, c’est le

minimum !Htmlspecialchars($var) :

$new = htmlspecialchars("<a href='test'>Test</a>");print $new; // &lt;a href=&#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>7

Page 8: PHP

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("&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;

8

Page 9: PHP

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

Page 10: PHP

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