
William Charles
0
2159
551
Świat bezpieczeństwa w Internecie jest nękany otwartymi portami, tylnymi drzwiami, dziurami w zabezpieczeniach, trojanami, robakami, podatnością na zaporę ogniową i mnóstwem innych problemów, które utrzymują nas wszystkich na nogi. Dla prywatnych użytkowników wirusy i robaki wydają się najgorszą z możliwości. Ale dla każdego, kto korzysta z bazy danych, zastrzyk SQL jest jedną z najbardziej destrukcyjnych wad bezpieczeństwa.
Bazy danych są niezwykle cenne w dziedzinie komputerów. Są niezbędne do przechowywania danych jako pamięci i pokazywania różnych zależności między punktami danych. Tutaj w MakeUseOf mamy wiele baz danych poświęconych różnym zadaniom: jedna dla wszystkich naszych artykułów, jedna dla naszej bazy użytkowników, jedna dla naszego programu Rewards, a lista jest długa. Co się stanie, gdy nasze bazy danych zostaną złośliwie zaatakowane - lub nawet zniszczone?
Gdy nie masz faktycznego dostępu do bazy danych, wstrzyknięcie SQL jest jedną z najważniejszych form ataku. Czytaj dalej, aby dowiedzieć się, co to dokładnie jest i jak może być tak niebezpieczne.
Co to w ogóle jest SQL?
Aby zrozumieć iniekcję SQL, musisz najpierw zrozumieć, czym jest SQL i jak odnosi się do strony internetowej. SQL, który oznacza Structured Query Language, jest rodzajem języka programowania zoptymalizowanego do zarządzania danymi tabelarycznymi. Dla wszystkich celów i celów jest to po prostu sposób dla programistów na komunikację z bazą danych i wydawanie jej poleceń.
Za każdym razem, gdy działa baza danych, wydawane są i przetwarzane polecenia SQL. Jeśli pomyślisz o wszystkich przypadkach, w których działa baza danych, wyciągniesz wniosek, że dzieje się to tylko w kilku okolicznościach:
- Kiedy należy wprowadzić nowe dane,
- Kiedy bieżące dane wymagają zmiany,
- Kiedy stare dane muszą zostać usunięte,
- Kiedy określony fragment danych musi zostać przeszukany i pobrany.
Za każdym razem, gdy trzeba wykonać jedno z tych działań, polecenie SQL jest wykonywane gdzieś na serwerze. W większości przypadków programista określa, kiedy i gdzie te polecenia SQL występują w kodzie źródłowym. Istnieją jednak nieuniknione okoliczności, w których użytkownik może wymusić manipulację bazą danych - i te możliwości są wszędzie wokół ciebie.
Czy logowałeś się kiedyś na stronie internetowej? Czy kiedykolwiek zamieściłeś komentarz na blogu lub odpowiedź w wątku na forum? Czy kiedykolwiek wysłałeś wiadomość na Facebooku do znajomego? Wpisałeś wiadomość e-mail w Gmailu? Szukałeś witryny w Google? Za każdym razem, gdy zobaczysz pole wejściowe na stronie internetowej (nazwa użytkownika, hasło, zapytanie wyszukiwania, okno komunikatu itp.), Ten tekst jest wysyłany do bazy danych i reagowany na.
Teraz, jeśli złośliwy użytkownik chciał manipulować bazą danych, nie ma dla niego zbyt wielu możliwości. Jedną z możliwości byłoby uzyskanie rzeczywistej fizyczny dostęp do serwera i zniszcz go u jego podstawy. Ale w przeciwnym razie najbardziej sensowne jest, aby złośliwy użytkownik przejął istniejące polecenie SQL podczas korzystania z pola wejściowego, zmuszając w ten sposób serwer do wykonania polecenia innego niż pierwotnie zamierzono.
Technika wtrysku SQL
Ten akt przejęcia istniejącej komendy SQL jest tym, o czym mówi iniekcja SQL. Dlaczego nazywa się to zastrzykiem? Ponieważ przejęcie polecenia SQL wymaga od użytkownika wstrzyknięcia własnego kodu SQL podczas korzystania z pola wejściowego. Czy to brzmi myląco? Pozwól mi zilustrować przykładem.
Rozważ stronę logowania MakeUseOf. Po wprowadzeniu nazwy użytkownika i hasła i wciśnięciu “Zatwierdź“, zmuszasz serwer WWW do wygenerowania polecenia SQL, które zawiera właśnie podane informacje, tj. nazwę użytkownika i hasło. Baza danych otrzymuje informacje, weryfikuje poprawność kombinacji nazwy użytkownika i hasła, a następnie zapewnia odpowiedni dostęp do innych obszarów witryny.
Teraz wyobraź sobie, co by się stało, gdyby złośliwy użytkownik nie wprowadził swojej nazwy użytkownika i hasła, a zamiast tego wpisał polecenie SQL jako swoją nazwę użytkownika? Jeśli kod serwera nie jest odpowiednio zabezpieczony, baza danych otrzyma błędną nazwę użytkownika (która jest tak naprawdę poleceniem SQL) i faktycznie uruchomi ją jako polecenie.
I dlatego nazywa się to zastrzykiem. Polecenie SQL jest wstrzykiwane do bazy danych za pomocą całkowicie uzasadnionych środków, manipulując nim tak, aby w końcu zrobił coś, czego nie miał robić.
Zaawansowany przykład
Do tej pory opisywałem iniekcję SQL w kategoriach wysokiego poziomu, aby każdy mógł zrozumieć - nawet te bez znajomości programowania. W tej sekcji podam prawdziwy przykład w jaki sposób ta technika jest możliwa. Jeśli jesteś początkującym SQL, lub jeśli nigdy wcześniej nie zajmowałeś się programowaniem, możesz spokojnie pominąć tę sekcję.
Podczas logowania się na stronie internetowej można zapisać kod w języku SQL w następujący sposób:
WYBIERZ identyfikator_użytkownika
FROM users_db
GDZIE nazwa użytkownika = „$ nazwa użytkownika” ORAZ hasło = „$ hasło”
Zasadniczo polecenie prosi bazę danych o zwrócenie wszystkich user_ids ze stołu users_db pasujące do wprowadzonej kombinacji nazwy użytkownika i hasła. Wygląda dobrze i elegancko, prawda?
Załóżmy, że formularz logowania otrzymał następujące dane wejściowe:
Nazwa użytkownika: David
Hasło: fubar „OR” x ”=„ x
Zauważ, że pole hasła nie zaczyna się ani nie kończy apostrofem. Gdy serwer otrzyma tę próbę logowania, weźmie wszystko podane w polu hasła i umieści je w miejscu $ hasło w kodzie. Wynikowe polecenie SQL będzie wyglądać następująco:
WYBIERZ identyfikator_użytkownika
FROM users_db
GDZIE nazwa użytkownika = „David” ORAZ hasło = 'fubar „OR” x ”=„ x„
Gdy serwer uruchomi to polecenie, uruchomi się ostatnia część tego polecenia SQL zawsze zwróć prawdę. Oznacza to, że złośliwy użytkownik może wprowadzić dowolną nazwę użytkownika i natychmiast uzyskać dostęp do tego konta, ponieważ logowanie zadziałałoby bez względu na to, czy poprawnie go podał.
Oczywiście zalogowanie się na czyjeś konto jest raczej łagodnym wykroczeniem, gdy porównasz je ze wszystkimi innymi możliwymi próbami włamania: usuwanie całych baz danych, zrywanie wszystkich danych, a nawet kradzież dane w bazach danych.
Profesjonalni twórcy stron internetowych coraz lepiej zapobiegają takim sztuczkom, ale od czasu do czasu słyszysz, że firma poniosła stratę z powodu ataku polegającego na wstrzyknięciu SQL. Kiedy to się stanie, teraz wiesz, co to znaczy i jak to możliwe.
Kredyt na zdjęcie: Wstęp Obraz za pośrednictwem Shutterstock, Schemat bazy danych za pośrednictwem Shutterstock, Zhackowany przez Shutterstock