Cela pourrait être une question stupide. Ou peut-être que mes capacités de piratage sont limitées (je ne les pratique pas du tout).Les requêtes multilignes sql-injection sont-elles sécurisées?
J'ai une requête qui ressemble à ceci:
<?php
$query =<<<eot
SELECT table_x.field1,
table_x.field2,
table_y.*,
table_z.field4
FROM (
SELECT ...
) as table_y
LEFT JOIN table_x
ON table_x.field1 = table_y.field_x
LEFT JOIN table_z
ON table_z.field1 = table_y.field_z
WHERE table_x.field3 = '$something'
AND table_z.field4 = '1'
AND table_z.field5 = '2'
eot;
?>
J'ai beaucoup d'autres tests sur $something
avant qu'il ne soit utilisé, comme $something = explode(' ',$something);
(ce qui entraîne plus tard dans une chaîne) aucun d'entre eux l'intention d'empêcher injection, mais ils rendent difficile pour l'injection donnée d'obtenir ce qui est à la requête réelle. Cependant, il existe des moyens. Nous savons tous combien il est facile de remplacer un espace pour autre chose qui est toujours valide ..
Donc, ce n'est pas vraiment un problème de faire un tronçon SQL potentiellement dangereux que $something
... Mais y a-t-il façon de commenter le reste de la chaîne de requête d'origine si elle est multi-ligne?
Je peux commenter AND table_z.field4 = '1'
en utilisant ;--
mais ne peut pas commenter les éléments suivants AND table_z.field5 = '2'
Est-il possible d'ouvrir un commentaire sur plusieurs lignes /*
sans la fermer ou quelque chose qui ressemblait, et donc permettre l'injection d'ignorer la multi requête de ligne?
Merci Adam, vous avez raison. Il est facile de pirater cette requête multi-ligne. Honte à moi de ne pas avoir vu cette option. Ceci est cependant un exemple et ma situation est un peu plus compliquée. Puisque j'ai échoué à m'expliquer, j'accepterai votre réponse comme correcte. – acm