Accueil
Forums
Turoriaux
Inscription
Connexion
Fil RSS
Bienvenue invité !
Lundi 07 Juillet 2008
Vous êtes ici: Crea-paradise.com > Tutoriaux > Conception web > PHP > Sécuriser les données entrées

Sécuriser les données entrées



Informations sur le tutorial
Image du tutorial Auteur : Rom11 Commentaires : 4
Note : Note: 1/5 Vu : 361
Date : 22/04/2008 à 20h22 Actions : Commenter et noter ce tutorial
Dernière modification : 10/05/2008 à 10h41


Salut codeurs ou codeuses !

Dans ce petit tutorial je vais vous montrer quelques techniques de sécurisation qu'il faudra adopter dans la création d'un site !

Comment on fait ça ?

Dans ce tutorial je vais vous présenter trois fonctions pour sécuriser un formulaire (ou tout autres données qu'un utilisateur pourrait entrer) :

  • htmlentities() (que vous connaissez peut-être déjà)
  • intval()
  • mysql_real_escape_string()


Attention
la technique abordée dans ce tutorial sera une habitude à prendre si vous ne connaissez pas encore ces fonctions si vous voulez que votre site ne se fasse pas hacker facilement !


htmlentities()

Information
Cette fonction sert à empêcher de se faire faire exécuter du xHTML sur une donnée que l'utilisateur à entré, en clair au lieu de faire s'exécuter le html, il l'affiche .
Utilisation : htmlentities($VALEUR);


Donc si l'utilisateur tape :
Code (x)HTML:
<script>alert(/Hacked/)</script>

ça affichera une boite d'alerte avec /Hacked/ écrit à l'intérieur !

Mais si vous utilisez la fonction htmlentities, ça affichera :
Citation: Rendu
<script>alert(/Hacked/)</script>


Exemples d'utilisation dans un script PHP



Code PHP:

<?php
if(isset($_POST['message'])){ // Si il a posté le formulaire
     $message = htmlentities($_POST['message']); // On sécurise la variable
     echo $message; // On affiche le résultat
}else{ // On affiche le formulaire
?>
<form method="post">
<input type="text" name="message" /><input type="submit" />
</form>
<?php
}
?>


intval()

Information
Cette fonction transforme n'importe quelle valeur en valeur numérique entière , sauf si cette valeur est déjà un nombre
Utilisation : intval($VALEUR);


Exemple d'utilisation dans un script PHP


Code PHP:
<?php
if(isset($_GET['page'])){
     $page = intval($_GET['page']);
     echo 'Vous êtes sur la page' . $page;
}else{
?>
<form method="get">
<p>
     <input type="text" name="page" /> - <input type="submit" />
</p>
</form>
<?php
}


mysql_real_escape_string()

Information
Cette fonction sert à protéger les données qui devront être enregistrées dans une base de donnée, elle protège les caractères suivants :
Code :
NULL, x00, n, r, , ', ", x1a

Ceci permet d'éviter les injections SQL. Il est très important de le faire avant tout enregistrement dans une base de données.
Utilisation : mysql_real_escape_string($VALEUR);


Exemple d'utilisation dans un script PHP


Cet exemple est tiré d'un code non complet !
Code PHP:
[...]
<?php
$pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo'])); // CETTE LIGNE NOUS INTÉRESSE
$pass = md5($_POST['pass']); // On crypte le mot de pass
$mail = mysql_real_escape_string($_POST['mail']); // CETTE LIGNE NOUS INTÉRESSE
mysql_query("INSERT INTO membres VALUES('', '".$pseudo."', '".$pass."', '".$mail."', '".time()."', '2')") or die(mysql_error());
?>
[...]

Si vous ne comprenez pas la totalité du code ce n'est pas grave, ce qui est important c'est de comprendre l'utilisation de mysql_real_escape_string.

En conclusion

Si vous utilisez correctement ces fonctions vous réduisez considérablement les chances de vous faire hacker .
Alors n'oubliez surtout pas de les utiliser dans vos scripts PHP !

Merci à Never pour ses critiques



4 commentaires



> Posté le : 09/05/2008 à 14h10 | Note : Note: 1/5
Avatar de Never


Groupe : Membres


Tutoriel utile mais j'ai quand même des remarques .

Tout d'abord, dans ton intro, tu dis "la technique abordée dans ce tutoriel sera une habitude à prendre si vous ne connaissez pas encore ces fonctions si vous voulez que votre site ne se fasse pas cracker facilement !".  On cracke un logiciel mais pas un site ; un site on le hack .
Deuxièmement, htmlentities ne sert pas à "empêcher d'afficher du html sur une donnée que l'utilisateur à entré" mais à convertir tous les caractères éligibles en entités HTML.  On affiche pas toujours les données de l'utilisateur.
Troisièmement, "ça affichera une boite d'alerte avec /Hacked/ écrit à l'intérieur !".  Détail mais il fallait que je le dise.
Quatrièmement, "Cette fonction transforme n'importe quelle valeur en nombre, sauf si cette valeur est déjà un nombre  ", en valeur numérique entière équivalente d'une variable.
Cinquièmement,
Code PHP:
<?php
$pseudo = mysql_real_escape_string(htmlentities($_POST['pseudo'])); // CETTE LIGNE NOUS INTÉRESSE
$pass = md5($_POST['pass']); // On crypte le mot de pass
$mail = mysql_real_escape_string($_POST['pseudo']); // CETTE LIGNE NOUS INTÉRESSE
mysql_query("INSERT INTO membres VALUES('', '".$pseudo."', '".$pass."', '".$mail."', '".time()."', '2')") or die(mysql_error());
?>


3eme ligne, tu prends le pseudo ou le mal  ?

Mauvais..., je suis dur mais c'est pour que tu progresses ... .
Perso, je me demande comment on a pu faire pour te le valider ...

Never @ Thibault

LuxSound en création .

Administrer son site en deux fichiers PHP.
> Posté le : 10/05/2008 à 07h55 | Note : Aucune
Aucun avatar


Groupe : Membres


Salut, j'ai pas bien compris ce tuto 

Enfin bref, voila ce que j'ai fait pour sécuriser mon formulaire, et ce au niveau du traitement de l'encoi des donées


J'ai mit:

Code :
$contenant=str_replace("'","'",$contenant);
$contenant=str_replace('"','"',$contenant);
$contenant=str_replace('<','&lt',$contenant);
$contenant=str_replace('>','&gt',$contenant);

              ps:  La mise en forme a etait changé, L'absence de   ;   apres &lt et &gt, sont normal, j'ai eviter que le serveur interprete cela )

et au lieu d'afficher le resultat, que ca pourais faire en php, (j'ai essayer avec mon message de validation du méssage) voici ce que ca ma donner:
Code :

<? echo("<center><font color=blue> <br/><br/><br/> <h3>Demande envoyée! <br/> Votre demande vas étre validé, et nous vous recontarcterons.</h3></font> <br/><a href='http://www.textonetwork.fr'/>Cliquez ici pour revenir à l'accueil</a></center>"); ?>

Quec vous en pensez??

Je sait c'est long a faire, mais au moins ca fonctionne, car le tuto na a pas marcher chez moi 

++

LINUX POoOoOoOoOoOoOoOoWA
> Posté le : 16/05/2008 à 13h19 | Note : Aucune
Avatar de Never


Groupe : Membres


Ce tutoriel est très mal fait bambou .

Never @ Thibault

LuxSound en création .

Administrer son site en deux fichiers PHP.
> Posté le : 25/05/2008 à 00h18 | Note : Aucune
Aucun avatar


Groupe : Membres


Pk bambou c'est pas mon tuto 

Un jour, Chuck Norris a voulu enseigner le Jeet Kun Do à de jeunes handicapés mentaux. C'est ainsi qu'est née la Tecktonic.




1