Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1276 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] addslashes() vs mysql_escape_string()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] addslashes() vs mysql_escape_string()

n°1653407
ZeBix
edit > preview
Posté le 05-12-2007 à 16:52:44  profilanswer
 

Salut tous,
 
J'ai utilisé addslashes() depuis des années devant mes strings à encoder dans une database via un mysql_query , vu que je travaille généralement sur des serveurs sans la gpc magic quotes , sinon par souci de portabilité je teste celle-ci avec get_magic_quote_gpc()
 
Récemment, un collègue m'a fortement conseillé d'utiliser mysql_escape_string() à la place, parce que cette fonction est désignée plus particulièrement pour des requêtes MySQL.
 
J'suis allé voir sur php.net et apparemment les deux fonctions fonctionnent de manière sensiblement identique, à ceci près que escape_string semble échapper davantage de trucs.
 
Considérant que l'on ne changera probablement pas de moteur de bases de données demain (je doute que le mysql_escape_string fonctionne avec des requêtes Oracle... me trompé-je?), est-ce que je dois prendre la peine, par souci de "propreté", ou d' "efficacité", de remplacer mes addslashes par des escape_string ?  
Et est-ce que , à l'avenir, vous me conseilleriez de travailler avec escape_string exclusivement, dans un contexte php + MySQL ?
 
Ou avez-vous plsu d'infos sur le sujet ?


Message édité par ZeBix le 05-12-2007 à 17:11:24
mood
Publicité
Posté le 05-12-2007 à 16:52:44  profilanswer
 

n°1653410
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2007 à 16:53:57  profilanswer
 

Ne jamais utiliser addslashes, ça marche pas et c'est le meilleur moyen d'avoir une faille de sécurité dans ton appli.
 
Pour MySQL, utiliser mysql_real_escape_string
Pour Postgres, utiliser pg_escape_string
Pour Oracle, vas voir dans oci8
 
Et dans tous les cas, c'est une encore meilleure idée d'utiliser PDO

Message cité 1 fois
Message édité par masklinn le 05-12-2007 à 16:59:22

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1653412
dwogsi
Défaillance cérébrale...
Posté le 05-12-2007 à 16:55:10  profilanswer
 

Et de manière plus générale : mieux vaut utiliser la fonction propre au SGBD.


Message édité par dwogsi le 05-12-2007 à 16:55:24

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1653420
ZeBix
edit > preview
Posté le 05-12-2007 à 16:59:06  profilanswer
 

masklinn a écrit :

Ne jamais utiliser addslashes, ça marche pas


Je ne suis pas d'accord, addslashes marche très bien.
 

masklinn a écrit :

et c'est le meilleur moyen d'avoir une faille de sécurité dans ton appli


Peux-tu m'en dire plus ?
 

n°1653425
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2007 à 17:03:58  profilanswer
 

ZeBix a écrit :


Je ne suis pas d'accord, addslashes marche très bien.


Oh oui, j'ai jamais dit que ça marchait pas, juste que ce que ça fait n'a aucun intérêt et ne protège pas contre les injections SQL

ZeBix a écrit :


Peux-tu m'en dire plus ?


Les caractères \x00, \n, \r, et \x1a ne sont pas échappés par addslashes et permettent donc d'effectuer des injections sous MySQL, il y a des problèmes identiques avec les autres SGBD.

 

Pour le cas addslashes vs mysql_real_escape_string: http://shiflett.org/blog/2006/jan/ [...] ape-string et les réactions à ce post http://www.jansch.nl/2007/11/30/do [...] e-escapes/ et http://wonko.com/article/362


Message édité par masklinn le 05-12-2007 à 17:04:26

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1653426
omega2
Posté le 05-12-2007 à 17:05:12  profilanswer
 

ZeBix a écrit :


Je ne suis pas d'accord, addslashes marche très bien.
 

Ca marche, mais ça ne protège pas (c'est pas fait pour) Donc pour reprendre les dire d'un gas que je connais : "Ca marche, mais ça marche pas."
 

ZeBix a écrit :


Peux-tu m'en dire plus ?
 

Oui, on peut : il n'y a pas que les ' et " qui sont dangeureux pour mysql. Si tu veux en savoir encore plus, il faut fouiller le net ou la doc de mysql pour trouver des exemples pratiques d'attaques.

n°1653431
ZeBix
edit > preview
Posté le 05-12-2007 à 17:11:07  profilanswer
 

Oki :)
En fait mon idée au départ est bien sûr d'éviter de couper mes string à cause d'apostrophes qui en feraient partie .. mais vu sous cet angle (merci Masklinn pour les liens) à savoir les injections en même temps, il vaut clairement mieux prendre l'habitude du escape_string.
 
Case closed, merci !

n°1653433
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2007 à 17:12:53  profilanswer
 

ZeBix a écrit :

Oki :)
En fait mon idée au départ est bien sûr d'éviter de couper mes string à cause d'apostrophes qui en feraient partie


Utilise sprintf ou (encore mieux) PDO et les prepared statements.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] addslashes() vs mysql_escape_string()

 

Sujets relatifs
[résolu] Eclipse me crée des classes en ...$1.class[MySql] Split d'un champ vers un autre
Function name must be a string[Resolu] Php + plusieurs bases Access
trier après une requète (résolu)[Resolu] Condition pour changer une class
[Résolu] Une boucle dans une requête SQL?Boucles et performances [ résolu ]
[Résolu] [Java] method invoke avec List<generics>[Résolu][StringTokenizer - Urgent] Comment ça marche ?
Plus de sujets relatifs à : [Résolu] addslashes() vs mysql_escape_string()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR