PHP

Post on 22-Jan-2016

31 views 0 download

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

Transcript of PHP

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; // &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

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

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