Это может быть глупый вопрос.
Или, может быть, мои хакерские навыки ограничены (я их совсем не практикую).
У меня есть запрос, который выглядит так:
<?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;
?>
У меня есть много других тестов на $something
, прежде чем он будет использован, например, $something = explode(' ',$something);
(что позже приводит к появлению строки), ни один из них не намеревается предотвратить инъекцию, но они затрудняют данную инъекцию как к фактическому запросу.
Однако есть способы. Мы все знаем, как легко заменить пробел на что-то еще, что все еще действует ..
Таким образом, на самом деле не проблема заставить потенциально опасный кусок SQL достичь того, что $something
...
Но есть ли способ прокомментировать оставшуюся часть исходной строки запроса, если она многострочная?
Я могу комментировать AND table_z.field4 = '1'
, используя ;--
, но не могу комментировать следующее AND table_z.field5 = '2'
Можно ли открыть многострочный комментарий /*
, не закрывая его или что-то похожее, и, следовательно, позволить инъекции игнорировать многострочный запрос?