Dynamiczny sql i problemy z nim związane - bezpieczeństwo baz danych
Bardzo dobrze sprawdzającą się techniką jest wpisywanie niepoprawnych zapytań i czerpanie informacji
z komunikatów o błędach. A co możemy się dowiedzieć? Spróbujmy zalogować się jako ' having 1=1.
Microsoft sql server wyrzuci wtedy błąd postaci:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.id' is
invalid in the select list because it is not contained in an aggregate
function and there is no GROUP BY clause.
No i proszę, nazwa tabelki i nazwa pierwszego pola. Jeśli chcemy poznać kolejne pola wystarczy dopisać
group by users.id do zapytania przed having i wyskoczy nam błąd, że druga kolumna nie jest w klauzuli group by.
Można poznać typy pól tabelki podając dane nieodpowiednich typów i czytając komunikat o błędzie,
w którym będzie napisane, że oczekiwano, np typu number, a użytkownik podał typ varchar.
Ale to jeszcze nie koniec.
dalej