Blind SQL Injection е метод, при който /хакер/ - в повечето случай - псевдо хакер.. Може да се възползва от разликите при генериране на лошо филтрирана входяща заявка.
За разлика от нормалният SQL Injection при Blind SQL Injection няма значение филтрирането на кавички и апострофи. В повечето случай на SQL Injectoion - хакер/псевдо хакер/ би се възползвал от генерирана SQL грешка, в този случай обаче не е нужна грешка, за да се извлекат данни.
Сайтовете използват SQL запитвания изградени, чрез няк'ви клиентски входни данни. Един пример:
Код:
http://site.com/view.php?id=5
Тук би могло да се построй запитване към базата съдържащо GET параметър ID в случая:
[sql]SELECT * FROM `table` WHERE `id` = 5[/sql]
След, което би могло лесно да се генерира резултат съдържащ информацията от базата или няк'ва информация за несъществуващата страницата (view.php?id=), ако в базата няма запис отговарящ на критериите зададени в WHERE.
Тук често срещана грешка е, че се ползва функция като addslashes() или mysql_real_escape_string().
Тъй като предаваните данни са целочислени би трябвало проверката да е за това дали се съдържат само числови стойности. (int)
В повечето случай за проверка дали съществува възможност за Blind SQL Injectoion се ползват стойности като 1=1 и 1=0. Тоест от горният пример:
Код:
http://site.com/view.php?id=5 and 1=1
Тоест
[sql]SELECT * FROM `table` WHERE `id` = 5 AND 1=1[/sql]
1=1 е винаги вярно - тоест би трябвало резултата да е динамична страница с ID 5.
Нямам намерения да давам по конкретни(опасни) примери, 'щото ще дойдат в действие още псевдо хакери.
Винаги използвай (int) когато в променливата GET ще ти е число - това е.