这可能是一个愚蠢的问题。或者也许我的黑客技能有限(我根本不练习)。
我有一个看起来像这样的查询:
<?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'
是否可以在不关闭它的情况下打开多行注释/*
或类似的东西,因此允许注入忽略多行查询?