Spisu treści:
Definicja - Co oznacza wstrzyknięcie SQL?
Wstrzyknięcie SQL to atak komputerowy, w którym złośliwy kod jest osadzany w źle zaprojektowanej aplikacji, a następnie przekazywany do bazy danych zaplecza. Złośliwe dane generują następnie wyniki zapytań do bazy danych lub działania, które nigdy nie powinny były zostać wykonane.
Techopedia wyjaśnia SQL Injection
Przejdźmy przez przykład ataku iniekcyjnego SQL:
Aplikacja prowadząca operacje banku zawiera menu, których można użyć do wyszukiwania danych klienta za pomocą punktów danych, takich jak numer ubezpieczenia społecznego klienta. W tle aplikacja wywołuje zapytanie SQL uruchamiane w bazie danych, przekazując wprowadzone wartości wyszukiwania w następujący sposób:
WYBIERZ nazwę klienta, telefon, adres, datę urodzenia GDZIE nr_społeczności = 23425
W tym przykładowym skrypcie użytkownik wprowadza wartość 23425 w oknie menu aplikacji, prosząc go o podanie numeru ubezpieczenia społecznego. Następnie, korzystając z wartości podanej przez użytkownika, zapytanie SQL jest uruchamiane w bazie danych.
Użytkownik ze znajomością języka SQL może zrozumieć aplikację i zamiast wprowadzić jedną wartość, gdy zostanie poproszony o numer ubezpieczenia społecznego, wprowadź ciąg „23425 lub 1 = 1”, który jest przekazywany do bazy danych w następujący sposób:
WYBIERZ nazwę klienta, telefon, adres, datę urodzenia GDZIE nr_społeczności = 23425 lub 1 = 1
Klauzula WHERE jest ważna, ponieważ wprowadza podatność. W bazie danych warunek 1 = 1 jest zawsze spełniony, a ponieważ określono zapytanie w celu zwrócenia szczegółów numeru ubezpieczenia społecznego klienta (23425) lub GDZIE 1 = 1, zapytanie zwróci wszystkie wiersze w tabeli, które nie były pierwotna intencja.
Powyższy przykład ataku polegającego na wstrzyknięciu SQL jest prosty, ale pokazuje, jak wykorzystać lukę w celu oszukiwania aplikacji w celu uruchomienia zapytania lub polecenia bazy danych zaplecza.
Ataki polegające na wstrzykiwaniu SQL można ograniczyć, zapewniając odpowiedni projekt aplikacji, szczególnie w modułach wymagających danych wejściowych od użytkownika w celu uruchomienia zapytań do bazy danych lub poleceń. W powyższym przykładzie aplikację można zmienić tak, aby akceptowała tylko jedną wartość liczbową.




