SQL Trek Discovery

W jednym z odcinków “Start Trek Discovery” sezonu drugiego (którego jakoś nie umiem zmęczyć do końca), tytułowy statek został zaatakowany. Obca sonda dokonała inwazji na komputery statku. Oficer Airiam, która istnieje w tle od pierwszego odcinka pierwszego sezonu raportując użyła określenia: SQL injection (w wolnym tłumaczeniu: wstrzykiwanie SQL-a). I choć na początku jedynie się uśmiechnąłem z pobłażaniem, tak później zacząłem rozmyślać, czy to aby nie śmiała predykcja.

Widzicie SQL injection to bardzo specyficzny rodzaj ataku. Należy do rodziny ataków ze wystrzykiwania kodu, jak można wnieść po nazwie (ten skrótowiec w nazwie na to wskazuje). To atak na bazę danych, ale za pomocą dziur w programie, który z tej bazy korzysta i który z założenia ogranicza dostęp do niej swoim użytkownikom. Relacyjną bazę danych dodajmy.

Czym są relacyjne bazy danych? To podgrupa baz danych. Wyróżniają się tym, że dane są zgrupowane w ściśle zdefiniowanych zbiorach (tabelach). A między tymi tabelami mogą być zdefiniowane powiązania (relacje – stąd nazwa). Niektórzy nie lubią tych restrykcji, dlatego do pewnych zastosowań stosuje się bazy innego rodzaju. Ale owe restrykcje dają też dwie ważne cechy: możliwość optymalizacji i tzw. język zapytań (SQL – tak, to jest nazwa języka, ale nieformalnie nazwała stała się synonimem baz, które umożliwiają jego użycie), ułatwiający pobieranie (odczyt z bazy) i zarządzanie danymi (dodawanie, zmiany i usuwanie).

Więc atak SQL injection to wykorzystanie dziur w programie, który korzysta z bazy SQL, aby cichaczem wrzucić do niej dodatkowe instrukcje SQL. A to pozwala na bardzo wiele. I tutaj docieramy do mojej zagwozdki.

Być może Gwiezdna Flota używa baz SQL. I do tego jakiegoś warstwy dostępowej, w której można przemycić nieco niepożądanej treści. Że po tych wszystkich wiekach ludzkość nie była w stanie wymyślić nic lepszego. W końcu SQL przecież nie jest taki znowu zły. Jest w użyciu już od prawie pół wieku (a to sporo w informatyce).

Ja jednak wątpię w świetlaną przyszłość baz relacyjnych. Głównie dlatego, że nawet dzisiaj istnieją inne sposoby gromadzenia danych, szczególnie dedykowane do obsługi ich wielkich ilości (czytaj: bazy danych na statku naukowym). Więc jeśli przyszłość przyniesie więcej tańszej mocy obliczeniowej być może zlikwiduje też potrzebę istnienia relacyjnych baz danych. Co jednak nie znaczy, że sam termin SQL injection przepadnie.

Bo czasem słowa przeżywają ich źródła. Jak choćby dyskietka 3,5 calowa, będąca ciągle symbolem zapisu (w ogóle macie jeszcze czytnik tychże?), albo słowo bug używane do określenia błędu w programie. Sam skrótowiec SQL już dziś zrobił niezłą karierę. Nawet wszystkie nierelacyjne bazy danych (a jest ich kilka rodzajów) określa się po prostu noSQL. Tak więc być może rzeczony pozostanie, nawet jeśli przyszłość przyniesie bardziej efektywne sposoby organizacji informacji?

Ale w to też wątpię, bo jak wspomniałem termin jest zbyt specyficzny. Kto wie, może się mylę. Przekonamy się w XXIII wieku. Do tego czasu obstawiam, że reżyser(ka) po prostu sprawdził(a) jakie są możliwe ataki na bazę danych i wyszukiwarka podała najpopularniejszą współcześnie nazwę. A można było zwyczajnie napisać: “sonda próbowała spenetrować nasze bazy danych”.

2 thoughts on “SQL Trek Discovery

  1. Czytałem gdzieś kiedyś, że dialogi w Star Treku powstają tak, że scenarzysta pisze sobie: “Kapitanie, tech nie techuje się z techem! A próbowaliście ztechować techa techem? Nie możemy, bo tech nie działa.” – a później wszystkie wystąpienia “tech” zastępuje niby-naukowymi terminami, które mu tam akurat najlepiej pasują. Zatem prawie na pewno było właśnie tak, jak podejrzewasz w ostatnim akapicie.

    Like

    • Nie wiem do którego to serialu (bo było ich wiele), ale w sumie pasuje do wszystkich. Choć w TNG, podobno najpopularniejszym rozwiązaniem problemów technicznych była odwrócenie polarności.

      Like

Comments are closed.