Dynamiczny sql i problemy z nim związane - bezpieczeństwo baz danych
Many nasze zapytanie $sql=select * from users where login = '$login' and password = '$password';
Spróbujmy wpisać w pole login ' or 1 = 1;--, hasło dowolne, ale na wszelki wypadek niepuste.
Zapytanie przyjmie postać select * from users where login = '' or 1 = 1;--and password = 'haslo';
Wynik będzie taki, że o ile tabela jest niepusta, to zostaną zwrócone jakieś rekordy (wszystkie), przy czym
zapewne pierwszy rekord zostanie uznany za rekord z naszymi danymi.
Zapewne na wyświetlonej stronie pokaże się gdzieś napis w stylu
witaj ala.
Możemy poznać loginy wszystkich użytkowników wpisując login:
' or 1 = 1 where login > 'ala' order by login;--
Interesującym nas loginem może być admin albo coś w tym stylu.
A co się stanie jeśli wpiszemy login ';drop table uzytkownicy;--?
Usuniemy tabelę użytkownicy. Można użyć poleceń update lub insert, aby
zmodyfikować tabelę. Ale skąd mamy się dowiedzieć jak nazywa się tabela i jakie są nazwy pól?
dalej