problème d'injection SQL, doctrine orm [resolu] - SQL/NoSQL - Programmation
Marsh Posté le 16-03-2011 à 12:13:04
Fais-lui afficher la requête générée, pour voir?
Marsh Posté le 16-03-2011 à 12:57:27
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')
Marsh Posté le 16-03-2011 à 13:50:31
ReplyMarsh Posté le 16-03-2011 à 17:17:16
boomy29 a écrit : il manquerai pas une cote a la fin ('rails') ? |
non il y en a bien un à la fin : '$taginput'
Marsh Posté le 16-03-2011 à 17:59:28
ReplyMarsh Posté le 19-03-2011 à 12:17:51
boomy29 a écrit : et cette requête marche dans ton sql ? |
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'" );
Marsh Posté le 16-03-2011 à 11:25:21
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 :
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