Fonction automatiques ?

WRInaute discret
Bonjour,
Je suis en train de créer un formaulaire pour mon site et lors de l'envoi vers la base de données j'effctue un addslashes et un htmlentities cependant je me demandai si cela n'était pas maintenant fait automatiquement lors de l'envoi d'une requete sur la base sql ?

Merci de vos réponses
 
WRInaute discret
salut

Si PHP est configuré pour, le addslashes() est fait automatiquement sur les données provenant de formulaires, cependant cette fonction n'est pas faîte pour proteger les données qu'on passe à une base de données, c'est une erreur très commune que de l'utiliser. Il FAUT utiliser la fonction spécifique à chaque base de données. Pour MySQL, par exemple, la fonction d'echappement est mysql_real_escape_string() :
http://php.net/mysql_real_escape_string. En utilisant addslashes(), tu t'exposes à des vulnaribilités.
Quand à htmlentities(), ça n'a rien à voir, et c'est totalement inutile de l'utiliser.

fab
 
WRInaute discret
Donc en fait si j'ai bien compris le fonctionnement de la fonction mysql_real_escape_string, il faut que je fasse :
Code:
$x = mysql_real_escape_string($x);
$y = mysql_real_escape_string($y);
$z = mysql_real_escape_string($z);
mysql_query("INSERT INTO mabase VALUES ('', '".$x."', '".$y."', '".$z."') ") or die(mysql_error());

Ps : En fait je me sert juste du htmlentities pour empecher les utilisateurs de mettre du code executable
 
WRInaute accro
Salut Fab,

Question :

mysql_real_escape_string() vient en remplacement de la fonction mysql_escape_string() qui elle est depreciée ?
 
WRInaute passionné
fablezouave a dit:
Quand à htmlentities(), ça n'a rien à voir, et c'est totalement inutile de l'utiliser.

fab
Ha bon ? Faudrait dire pourquoi là ! :lol:

Au contraire j'aurais poussé le vice à dire :
mysql_real_escape_string(htmlentities($variable));
Ou alors à la place d'htmlentities() mettre htmlspecialchars() (ne touche pas à tous les caractères spéciaux, notamment les accents) ou alors strip_tags() qui supprime les balises html

Comme le dit cybrnetik l'htmlentities() transforme les caractères tels que "<>" en entité html qui pourraient avec qqs fonctions javascript (et autres) s'avérer potentiellement dangereuse dans un formulaire !
 
WRInaute impliqué
htmlentities() n'est utile que pour l'affichage.

mysql_real_escape_string() est utile pour insérer des données dans la base de données.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut