|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Débutant
Inscription : novembre 2006 Messages : 1 036 ![]() |
Bonjour
J'ai une question sur la fonction mysql_escape_string(). Avant de poster, j'ai bien sur lu des tutoriels sur cette fonction, comme ici: http://php.net/manual/fr/function.my...ape-string.php Mais je n'arrive vraiment pas à savoir ce que cela fait. Ni a quoi ça sert. Il est écrit: La chaîne qui doit être échappée. Mais ça veut dire quoi une chaîne échappée? C'est quoi une chaîne non échappée? Merci |
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 706 ![]() |
Salut
En tout 1er, as tu bien pris en compte cette avertissement (bien plus visible sur le site officiel php.net) : Citation:
Selon le contexte, on a très souvent besoin d'échapper certains caractères pour éviter des conflits. Exemple simple en Php : Citation:
Php va croire dans ce cas que la délimitation est : 'Bonjour l' Du coup, le reste de la chaine pose problème. Pour ça, on échappe la quote comme ceci et plus de problème : Citation:
En faite, grâce à ce caractère spécifique, on indique explicitement que cette quote (au milieu) n'est pas un délimiteur, mais fait partie de la chaine. Tu rencontreras exactement le même problème pour les requêtes SQL (MySQL et autre) pour les chaines. Par précaution il vaut mieux systématiquement les échapper, cette fonction est faite pour ça. Après, vient un autre problème qui se rajoute : La sécurité. Si on échappe pas les données dans une chaine SQL, on prend le risque qu'un pirate plus malin que les autres parvienne à rajouter des instructions à ton insu à des fins plus ou moins malhonnêtes. Cette fonction mysql_real_escape_string() en fait donc un peu plus, c'est pour ça qu'il est largement recommandé de l'utiliser. A savoir qu'il y a PDO qui, si exploitée convenablement, on a plus besoin de le faire, PDO le fait automatiquement. Voir un tuto sur PDO : http://fmaz.developpez.com/tutoriels...omprendre-pdo/
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
00
|
|
|
#3 | |||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
Ce sont les requêtes préparées (sous réserve d'être correctement utilisées) qui font qu'on n'a plus rien à échapper. Mais elles ne sont en rien spécifiques à PDO : mysqli permet d'en tirer profit ainsi que sqlite3, pgsql, oci8, etc. C'est le client (pour la partie qui nous intéresse) qui les implémente, non PDO/PHP (à moins d'être émulées). Et PDO, comme les autres, permet aussi l'usage de requêtes non préparées, auquel cas il faut toujours échapper ses données soi-même (méthode quote pour PDO). Arrêtons l'amalgame absurde PDO = requêtes préparées = sécurité, malheureusement si courant. -- HS : inutile, mais pour montrer les différents types d'échappement : Code :
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com