Đây có thể là một câu hỏi ngu ngốc. Hoặc có thể kỹ năng hack của tôi bị hạn chế (tôi không thực hành chúng chút nào).Các truy vấn multiline sql-injection có an toàn không?
Tôi có một truy vấn mà trông như thế này:
<?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;
?>
Tôi có rất nhiều thử nghiệm khác trên $something
trước khi nó được sử dụng, như $something = explode(' ',$something);
(mà sau này dẫn đến một chuỗi) ai trong số họ có ý định ngăn chặn tiêm nhưng họ làm cho nó khó khăn cho tiêm nhất định để có được như là để truy vấn thực tế. Tuy nhiên, có nhiều cách. Chúng ta đều biết cách thay thế một không gian cho một thứ gì đó khác vẫn còn hiệu lực ..
Vì vậy, nó không thực sự là một vấn đề để tạo ra một đoạn SQL có khả năng gây hại mà $something
... Nhưng có cách để bình luận phần còn lại của chuỗi truy vấn ban đầu nếu nó là nhiều dòng?
tôi có thể bình luận AND table_z.field4 = '1'
sử dụng ;--
nhưng không thể bình luận như sau AND table_z.field5 = '2'
Có thể mở một đa dòng chú thích /*
mà không đóng nó hoặc một cái gì đó trông giống như và do đó cho phép tiêm để bỏ qua sự đa truy vấn dòng?
Cảm ơn Adam, bạn nói đúng. Thật dễ dàng để hack truy vấn nhiều dòng này. Xấu hổ với tôi vì không thấy tùy chọn đó. Đây là một ví dụ và tình huống của tôi phức tạp hơn một chút. Vì tôi không giải thích được, tôi sẽ chấp nhận câu trả lời của bạn là chính xác. – acm