これはばかげた質問かもしれません。あるいは、私のハッキングスキルは限られているかもしれません(私はそれらをまったく練習していません)。
次のようなクエリがあります。
<?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'
複数行のコメント/*
を閉じずに開くこと、またはそのように見えるものを開いて、インジェクションが複数行のクエリを無視できるようにすることは可能ですか?