Das könnte eine dumme Frage sein. Oder vielleicht sind meine Hacking-Fähigkeiten begrenzt (ich übe sie überhaupt nicht).Sind mehrzeilige Abfragen sql-injection sicher?
Ich habe eine Abfrage, die wie folgt aussieht:
<?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;
?>
Ich habe viele andere Tests auf $something
, bevor es verwendet wird, wie $something = explode(' ',$something);
(die in einem String führen später) keiner von ihnen beabsichtigen, zu verhindern, Injektion, aber sie machen es schwierig für die gegebene Injektion zu erhalten, wie es für die eigentliche Abfrage ist. Allerdings gibt es Wege. Wir alle wissen, wie einfach es ist, einen Platz für etwas anderes, das noch gültig ist, zu ersetzen.
Also ist es nicht wirklich ein Problem, ein potenziell schädliches Stück SQL zu erreichen, dass $something
... Aber es gibt irgendwelche Möglichkeit, den Rest der ursprünglichen Abfragezeichenfolge zu kommentieren, wenn es mehrzeilig ist?
kann ich einen Kommentar AND table_z.field4 = '1'
;--
verwenden, aber nicht einen kurzen Kommentar zum AND table_z.field5 = '2'
Ist es möglich, /*
einen mehrzeiligen Kommentar zu öffnen, ohne sie oder etwas schließen aussah und erlauben daher die Injektion die multi- zu ignorieren Zeilenabfrage?
Danke Adam, du hast Recht. Es ist einfach, diese mehrzeilige Abfrage zu hacken. Schade mich, dass ich diese Option nicht gesehen habe. Dies ist jedoch ein Beispiel und meine Situation ist ein wenig komplizierter. Da ich es versäumt habe, mich zu erklären, werde ich deine Antwort als richtig akzeptieren. – acm