AWWW-1st3.6-w13.tresc-1.0-Slajd9
SQL Injection - przykłady
Atak typu SQL Injection może być przeprowadzony z użyciem rozmaitych konstrukcji języka SQL. Przykłady takich konstrukcji przedstawiono na slajdzie. Dołączenie do zapytania operatora UNION umożliwia odczytanie z bazy danych zupełnie innych tabel niż przewidywane przez programistę. Rozwiązanie tego typu przedstawiliśmy na poprzednim slajdzie. Poprzez dołączenie do zapytania warunku logicznego zawsze spełnionego i powiązanie go spójnikiem OR umożliwia uzyskanie pełnego dostępu do danych, które programista usiłował filtrować. Kolejny pomysł opiera się na własności niektórych interpreterów SQL, pozwalających na wykonanie kilku działań zapisanych w jednym wierszu, oddzielanych znakami średnika. W ten sposób możemy np. wykonać polecenie DELETE tam, gdzie zamiarem programisty było polecenie INSERT. Wiele zagrożeń wiąże się też z tymi aplikacjami, które parametry użytkownika dołączają do poleceń modyfikacji danych, np. UPDATE. Przykład przedstawiony w dolnej części slajdu obrazuje fragment kodu źródłowego w języku Java, który umożliwia zmianę hasła użytkownika o podanej nazwie. Jeżeli jednak zamiast nazwy użytkownika wprowadzimy łańcuch znakowy o brzmieniu "x' OR username LIKE 'admin", to sprawimy, że hasło zostanie zmienione także administratorowi systemu. Zasięg ataków typu SQL Injection jest ograniczony wyłącznie wyobraźnią włamywacza.