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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [resolu] problème d'injection SQL, doctrine orm

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] problème d'injection SQL, doctrine orm

n°2064000
strim
Posté le 16-03-2011 à 11:25:21  profilanswer
 

Bonjour, j'ai créé la requête suivante avec Doctrine ORM, qui permet d'afficher "les messages ayant certains tags".
Mysql retourne une erreur 'SQLSTATE[42000]: Syntax error or access violation: 1064 ...'
 
lorsque le tag contient le mot 'on', ou 'with'. Par exemple le tag 'ruby on rails'. Voici la requête :  
 

Code :
  1. $taginput = 'ruby on rails';
  2.  $i = 1;
  3.  $q = Doctrine_Query::create()
  4.   ->select('q.id')
  5.   ->from('Message q')
  6.   ->innerJoin("q.Tags t$i WITH t$i.name = '$taginput'" );
  7.  $data['messages'] = $q->execute()->getData();


 
Je ne comprend pas pourquoi Doctrine interprète $taginput quand celui contient le mot "on" ou "with", alors qu'il est entre guillemets. Il n'y a pas d'erreur SQL provoqué pour des tags comme "php", "jquery", etc.
Comment pourrait-je sécuriser mon code ?


Message édité par strim le 19-03-2011 à 12:18:14
mood
Publicité
Posté le 16-03-2011 à 11:25:21  profilanswer
 

n°2064023
skeye
Posté le 16-03-2011 à 12:13:04  profilanswer
 

Fais-lui afficher la requête générée, pour voir?


---------------
Can't buy what I want because it's free -
n°2064037
strim
Posté le 16-03-2011 à 12:57:27  profilanswer
 

skeye a écrit :

Fais-lui afficher la requête générée, pour voir?


 
voici :  
 
SELECT q.id AS q__id FROM message q INNER JOIN message_tag_link q2 ON (q.id = q2.id_message) INNER JOIN tag t ON (rails')

n°2064053
boomy29
PSN: tintine29
Posté le 16-03-2011 à 13:50:31  profilanswer
 

il manquerai pas une cote a la fin  ('rails') ?

n°2064189
strim
Posté le 16-03-2011 à 17:17:16  profilanswer
 

boomy29 a écrit :

il manquerai pas une cote a la fin  ('rails') ?


 
non il y en a bien un à la fin : '$taginput'

n°2064205
boomy29
PSN: tintine29
Posté le 16-03-2011 à 17:59:28  profilanswer
 

et cette requête marche dans ton sql ?
 
elle sort quoi comme erreur sinon ?

n°2064779
strim
Posté le 19-03-2011 à 12:17:51  profilanswer
 

boomy29 a écrit :

et cette requête marche dans ton sql ?
 
elle sort quoi comme erreur sinon ?


 
Je viens de trouver la solution :  
 
la syntaxe correcte est :  
 
->innerJoin("q.Tags t$i WITH t$i.name = ?', $taginput );  
 
et non :  
 
->innerJoin("q.Tags t$i WITH t$i.name = '$taginput'" );  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [resolu] problème d'injection SQL, doctrine orm

 

Sujets relatifs
Probleme sur href et mailto[Résolu] Problème clause is ambiguous
Probleme avec stateApache + SVN, problème d'authentification
Macro Excel - Problème avec ActiveCell.Font.ColorIndexprobleme avec un JAVA suivant le serveur
[RESOLU]Requete SQL d'indicatifs chaud patateProblème NetworkStream C#
Plus de sujets relatifs à : [resolu] problème d'injection SQL, doctrine orm


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