Co to jest SQL Injection?

SQL Injection to technika wstrzykiwania kodu wykorzystywana do atakowania aplikacji opartych na danych poprzez wstawianie złośliwych instrukcji SQL w pole wykonania. Baza danych jest istotną częścią każdej organizacji. Jest to obsługiwane przez wysoki poziom bezpieczeństwa w organizacji. Nauczmy się najpierw, czym jest SQL.

Co to jest SQL?

SQL jest strukturalnym językiem zapytań. Służy do interakcji i manipulowania bazą danych.

Co dokładnie robi SQL?

  • Utwórz nową bazę danych.
  • Wstaw, aktualizuj, usuwaj rekordy.
  • Utwórz nowe zapytania.
  • Procedury składowane.
  • Twórz widoki.
  • Wykonuj zapytania.
  • Ustaw uprawnienia.

Wstrzyknięcie SQL jest jednym z głównych zagrożeń bezpieczeństwa. To dotyczy cyberprzestępczości.

W SQL mamy koncepcję o nazwie SQL Injection. Ta technika służy do wstrzykiwania kodu. SQLi (wstrzykiwanie SQL jest również znane jako rodzaj hakowania, tj. Atak wstrzykiwania). Jest również znane jako technika hakowania w sieci.

Ten zastrzyk wstrzykuje złośliwy kod do bazy danych, wprowadzając dane na stronie internetowej. Te dane wejściowe mają pewne warunki, które zawsze są prawdziwe. W tych warunkach hakerzy łatwo przechodzą testy bezpieczeństwa. Mogą łatwo uzyskać dane z bazy danych SQL. Za pomocą SQL Injection mogą dodawać, modyfikować i usuwać rekordy w bazie danych. Tą bazą danych może być ktoś spośród MySQL, SQL Server, Oracle, SQL Server itp. Jest nielegalny.

Jeśli witryna lub aplikacja jest źle zaprojektowana, ataki te mogą zaszkodzić całemu systemowi. W tym momencie pojawia się cyberbezpieczeństwo.

Zachowanie SQL Injection

Ataki te zazwyczaj działają na dynamiczne instrukcje SQL. Wstrzyknięcie SQL jest zależne od silnika bazy danych. Różni się to w zależności od silnika. Gdy poprosimy użytkownika o wprowadzenie danych na stronie, takich jak nazwa użytkownika i hasło. Nieumyślnie dajemy użytkownikowi dostęp do wprowadzania danych bezpośrednio do bazy danych.

Rodzaje SQL Injection

  1. In-band SQL injection (Classic SQL injection): W tej technice haker używa tego samego sposobu do zhakowania bazy danych i uzyskania danych, tj. Wyniku z bazy danych.
  1. Wstrzykiwanie SQL oparte na błędach: w tym typie haker pobiera wzorzec błędów bazy danych i uzyskuje do niej dostęp. Można powiedzieć, że jest to jeden z typów iniekcji SQL wewnątrz pasma.
  1. Wtrysk SQL oparty na Unii: ta technika jest również częścią wewnętrznego wstrzykiwania SQL. W tej technice użytkownik łączy zapytanie i odzyskuje wynik jako część odpowiedzi HTTP.
  1. Inferencyjne wstrzykiwanie SQL (niewidoczne wstrzykiwanie SQL): Jak sama nazwa wskazuje, haker nie wykorzystuje pasma do pobierania danych z bazy danych. Hacker ma możliwość zmiany struktury bazy danych poprzez obserwowanie wzorców bazy danych. Jest to bardzo niebezpieczny rodzaj wstrzykiwania SQL. Wykonanie tego ataku trwa dłużej. Haker nie jest w stanie zobaczyć wyniku ataku tą techniką.
  1. Boolean (oparty na zawartości) Wstrzykiwanie niewidomego SQL: Jest to część wstrzykiwania wnioskowania SQL. W tej technice haker zmusza do bazy danych pobranie wyniku w oparciu o warunek prawdziwy lub fałszywy. W zależności od tego warunku wynik odpowiedzi HTTP ulega zmianie. Ten rodzaj ataku ma na celu wywnioskowanie, czy użyty ładunek zwrócił wartość prawda czy fałsz, nawet jeśli żadne dane z bazy danych nie zostały zwrócone. Te szczególnie powolne ataki.
  1. Wstrzykiwanie niewidomego SQL zależne od czasu : Ta technika jest również częścią iniekcyjnego wnioskowania SQL. Hakerzy stosują tę technikę do umieszczania ładunków. W tej technice hakerzy poświęcają czas bazie danych na wykonanie zapytania. W międzyczasie haker ma pojęcie o tym, czy jest to prawda, czy fałsz. Ten proces ataku ma również powolny charakter.
  1. Pozapasmowy zastrzyk SQL: jest to atak oparty na cechach. To nie jest bardzo powszechne. Ten atak jest wykorzystywany przez hakera, gdy haker musi użyć różnych kanałów do ataku i innych, aby uzyskać wynik. Techniki wstrzykiwania poza pasmem SQL zależą od zdolności serwera bazy danych do wysyłania żądań DNS lub HTTP w celu dostarczenia danych do hakera.

Jak to działa?

Istnieją głównie dwa sposoby, w których atakujący koncentruje się na uzyskiwaniu danych:

  1. Bezpośredni atak: bezpośrednio przy użyciu kombinacji różnych wartości. Tutaj haker umieścił potwierdzone dane wejściowe, które dają dokładny wynik.
  2. Badania: Analiza bazy danych poprzez podanie różnych danych wejściowych. Tutaj atakujący obserwuje odpowiedzi serwera bazy danych i decyduje, który atak należy wykonać.

Jak już omówiliśmy, hakerzy wstrzykujący SQL umieszczają warunek w elemencie wejściowym, co jest zawsze prawdziwe. Sprawdź następujący przykład.

DAWNY:

Załóżmy, że mamy poniższe zapytanie, aby uzyskać dane pracownika z bazy danych:

500 LUB 1 = 1

Wybierz * spośród pracowników, gdzie identyfikator użytkownika = „500”

Identyfikator użytkownika :

Jeśli nie mamy żadnych ograniczeń dotyczących danych wejściowych użytkownika. Następnie hakerzy mogą użyć tego pola, aby łatwo uzyskać dostęp do danych z bazy danych.

Zapytanie może wyglądać jak poniżej

Wybierz * spośród pracowników, dla których identyfikator użytkownika = 500 LUB 1 = 1;

To zapytanie zwróci dane z bazy danych, ponieważ 1 = 1 zawsze zwróci wartość true. W ten sposób warunek staje się spełniony. To wydaje się wrażliwe. Jest to bardzo niebezpieczne dla organizacji. Pomyśl na przykład o sektorze bankowym. Gdzie użytkownicy mają swoje dane bankowości internetowej, hasła, informacje o saldzie itp.

Ta technika jest bardzo łatwa dla hakera w celu uzyskania informacji. Po prostu przekazując dane do bazy danych.

Hakerzy uzyskują dane po prostu wstawiając OR, i = wstawiając je do bazy danych.

Nazwa Użytkownika:

”Lub„ ”=”

Hasło:

”Lub„ ”=”

Na serwerze zapytanie końcowe jest wykonywane poprawnie, nie występuje błąd. Możesz także użyć „OR” 1 ”=„ 1, aby uzyskać dane z serwera bazy danych.

Teraz pojawia się pytanie, w jaki sposób utrzymalibyśmy bezpieczeństwo naszej bazy danych?

Odpowiedź brzmi: używając parametrów SQL.

Dodając dodatkowe parametry do zapytania podczas jego wykonywania. Atakom tym można łatwo zapobiec za pomocą niektórych poniższych technik.

Procedury przechowywane to procedury składowane, przygotowane instrukcje, wyrażenia regularne, prawa dostępu użytkownika do bazy danych, komunikaty o błędach itp .

Jeszcze jedna rzecz, którą, powinniśmy myśleć, rozsądne jest również posiadanie różnych baz danych dla różnych celów w aplikacji.

Jeszcze jedną rzeczą jest testowanie. Najlepszym sposobem jest również przetestowanie bazy danych pod kątem różnych warunków.

Wniosek

Tworzenie bazy danych jest kluczową częścią. Ryzyko uzyskania informacji w ręce hakerów nie jest dobre dla żadnej aplikacji. Tak więc, tworząc bazę danych, musimy wykonać kilka prostych kroków, aby zapobiec tej stracie, odpowiednim zwrotem jest „Zapobieganie jest lepsze niż leczenie”.

Polecane artykuły

Jest to przewodnik po tym, co to jest SQL Injection. Tutaj omawiamy zachowanie, jak to działa i typy SQL Injection. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Co to jest SQL Server?
  2. Co to jest SQL | Język zapytań wyjaśniony
  3. Co to jest programista SQL?
  4. Aktualizacja poleceń SQL
  5. Wyrażenia regularne w Javie