Это может быть глупый вопрос. Или, может быть, мои хакерские навыки ограничены (я их вообще не практикую).
У меня есть запрос, который выглядит так:
<?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'
Можно ли открыть многострочный комментарий /*
, не закрывая его или что-то похожее, и, следовательно, позволить инъекции игнорировать многострочный запрос?