Wstrzyknięcie SQL
Wstrzyknięcie SQL to forma cyberataku wymierzonego w witryny internetowe i aplikacje internetowe połączone z bazą danych. Ataki te wykorzystują nieprawidłowo skonfigurowane oprogramowanie serwera witryny internetowej i bazy danych, aby nakłonić serwer do przetworzenia instrukcji SQL, których w innym przypadku by nie wykonał. Ataki te mogą ujawnić poufne informacje osobowe i finansowe, umożliwić atakującemu zmianę lub usunięcie informacji przechowywanych w bazie danych albo zapewnić inny nieautoryzowany dostęp.
Witryna internetowa jest podatna na wstrzyknięcie SQL, gdy przyjmuje dane wprowadzane przez użytkownika w polu tekstowym formularza i dołącza je jako część zapytania SQL. Zamiast wypełnić pole formularza oczekiwaną informacją np. (nazwą użytkownika), atakujący wprowadza ciąg tekstowy, który modyfikuje zapytanie SQL. Na przykład hipotetyczne zapytanie może zaczynać się od SELECT UserID, Name, Password FROM Users WHERE UserID = , po którym następują dane wprowadzone w polu formularza identyfikatora użytkownika. Jeśli użytkownik wprowadzi swój identyfikator użytkownika, zapytanie działa zgodnie z oczekiwaniami i wyświetla jego informacje.
Jeśli jednak serwer wstawia tekst wprowadzony przez użytkownika do zapytania bez żadnych ograniczeń, atakujący może wykorzystać go do zmodyfikowania samej instrukcji zapytania SQL. Jeśli zamiast identyfikatora użytkownika ktoś wprowadzi tekst 317 OR 1=1, zapytanie przyjmie postać SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Ponieważ OR 1=1 zawsze daje wynik prawdziwy, zastępuje identyfikator użytkownika; zapytanie zwraca zamiast tego identyfikatory użytkowników, nazwy i hasła wszystkich wpisów w tabeli Users. Inne rodzaje wstrzykiwania kodu mogą umożliwić atakującemu zalogowanie się jako administrator witryny, usunięcie rekordów lub tabel z bazy danych albo (w niektórych skrajnych przypadkach) wstrzyknięcie i uruchomienie powłoki skryptów oraz innego kodu.
Administrator witryny internetowej może zapobiegać atakom polegającym na wstrzyknięciu SQL, aktualizując oprogramowanie serwera. Ważne jest również „oczyszczanie” danych wejściowych bazy danych przez ograniczanie tekstu wprowadzanego przez użytkownika lub filtrowanie określonych znaków. Administratorzy witryn internetowych mogą także parametryzować zapytania SQL — używać w zapytaniu symboli zastępczych odnoszących się do danych wprowadzonych przez użytkownika zamiast wstawiać te dane bezpośrednio do zapytania.
Sprawdź swoją wiedzę