Jak chronić swoją witrynę WordPress przed wstrzyknięciami SQL?

Opublikowany: 2022-03-09

WordPress jest jedną z najczęściej używanych platform do tworzenia stron internetowych ze względu na szeroki zakres potencjalnych zastosowań. Możesz zbudować sklep internetowy, prowadzić bloga o swoim ulubionym hobby, stworzyć społeczność na forach lub reprezentować dużą korporację.

Jednak bez względu na to, jak z niej korzystasz, głównym obowiązkiem jest ochrona witryny przed hakerami. Dlatego ważne jest, aby zrozumieć, jak zapobiegać atakom wstrzykiwania w języku SQL (Structured Query Language).

Dobrą wiadomością jest to, że istnieje wiele kroków, które możesz podjąć, aby chronić swoją witrynę WordPress przed tym złośliwym kodem. Nauczenie się, jak wykrywać, usuwać i zapobiegać wstrzykiwaniu kodu SQL, może pomóc w skutecznym zabezpieczeniu cennych danych i zmniejszyć podatność na ataki.

Co to jest wstrzyknięcie SQL i jak działa?

Aby zrozumieć, jak działają iniekcje, warto najpierw dowiedzieć się, czym jest SQL. Jest to powszechny język używany w tworzeniu baz danych.

Twoja witryna używa go do pobierania krytycznych informacji z bazy danych i generowania dynamicznej zawartości. Niektóre bazy danych SQL to MySQL (witryny WordPress), MongoDB i SQL Server.

Twoja witryna WordPress korzysta z bazy danych do zarządzania podstawowymi danymi i treściami witryny, takimi jak strony, posty i komentarze. Uporządkowuje te informacje w tabelach.

widok tabel w bazie danych WordPress

Twoja baza danych to miejsce, w którym przechowywane są Twoje najbardziej wrażliwe dane. Dlatego każdy atak, który go odsłoni, może mieć poważne konsekwencje.

SQL injection (SQLI) to rodzaj metody hakerskiej, której cyberprzestępcy używają do infiltracji i manipulowania bazami danych WordPress. Zasadniczo hakerzy mogą wykorzystywać luki w kodowaniu stron internetowych i umieszczać złośliwy kod w polach wprowadzania danych.

Ten kod umożliwia nikczemnym aktorom wykonywanie poleceń SQL na serwerach baz danych za pośrednictwem żądań internetowych przy użyciu ciągów zapytań, plików cookie i elementów <input>. Oznacza to, że mogą tworzyć, uzyskiwać dostęp, zmieniać i eliminować dane z Twojej bazy danych WordPress.

Istnieje wiele różnych punktów wejścia, w których może to nastąpić. Do najczęściej używanych pól wprowadzania należą formularze rejestracji, logowania i kontaktu, a także paski wyszukiwania i koszyki.

Załóżmy, że masz w swojej witrynie formularz, w którym odwiedzający mogą wpisać swój numer telefonu. Cyberprzestępcy mogą wykorzystać to pole do wprowadzania złośliwego kodu, który żąda podania nazwy użytkownika i hasła administratora.

Rodzaje iniekcji SQL

Istnieje kilka różnych typów iniekcji SQL. Jedną z kategorii jest tak zwana „w paśmie”. Jest to najprostszy rodzaj wstrzykiwania i obejmuje ataki oparte na błędach.

Dzięki tej technice hakerzy wykorzystują wstrzyknięcie, aby uzyskać szczegółowe informacje o strukturze bazy danych i nazwach tabel. Na przykład komunikat o błędzie może zawierać nazwę tabeli zawartą w zapytaniu. Następnie haker może wykorzystać te informacje do stworzenia nowych ataków.

Innym typem jest tzw. „ślepy wstrzyknięcie SQL”. To wtedy atakujący wysyła różne zapytania do bazy danych, aby dowiedzieć się, jak witryna analizuje odpowiedzi. Może to pomóc im w sondowaniu odpowiedzi na zapytania SQL w celu zidentyfikowania potencjalnych luk w zabezpieczeniach i zażądaniu od bazy danych przesłania danych do zewnętrznego źródła.

Jak powszechne są iniekcje SQL?

Niestety ataki typu SQL injection są powszechne. W rzeczywistości, zgodnie z raportem opublikowanym przez Akamai, w latach 2017-2019 około dwie trzecie ataków na aplikacje oprogramowania zostało przypisanych wstrzyknięciom SQL.

Oddzielny raport dotyczący statystyk dotyczących luk w zabezpieczeniach z 2020 r. wykazał również, że zastrzyki SQL stanowiły 42% najczęstszych krytycznych luk w zabezpieczeniach.

Wstrzykiwanie SQL to możliwość dla dowolnej strony internetowej korzystającej z baz danych SQL, takiej jak witryny oparte na WordPressie, zwłaszcza tych, które mają pola wejściowe, takie jak formularze kontaktowe i pola wyszukiwania.

Dlaczego zastrzyki SQL są niebezpieczne

Wstrzyknięcia SQL są niebezpieczne z kilku powodów. Po pierwsze, dają hakerom możliwość kradzieży poufnych informacji, takich jak dane logowania lub dane klientów.

Hakerzy mogą używać wstrzykiwania SQL nie tylko do pozyskiwania i kradzieży danych, ale mogą również używać ich do usuwania tych danych. Oznacza to, że istnieje ryzyko utraty prywatnych i niezbędnych informacji używanych do prowadzenia witryny.

Ponadto istnieje ryzyko utraty reputacji i utraty przychodów. Naruszenie danych może zaszkodzić Twojej firmie i możesz stracić zaufanie klientów lub fanów.

Ponadto te ataki mogą prowadzić do umieszczenia Twojej witryny na liście blokowania przez Google. Jeśli trafisz na tę listę, wielu potencjalnych odwiedzających otrzyma ostrzeżenie, że Twoja witryna jest niebezpieczna. Większość z tych ludzi wróci i może nigdy nie wrócić. Ponadto Google znacznie obniży Twoje rankingi wyszukiwania — co może prowadzić do poważnej, długoterminowej utraty ruchu organicznego, z którego trudno jest odzyskać.

Jak wykrywać iniekcje SQL

Istnieje kilka oznak, które mogą wskazywać, że padłeś ofiarą ataku typu SQL injection. Jednym z nich jest to, że nagle otrzymujesz napływ e-maili za pośrednictwem formularza kontaktowego Twojej witryny. Innym wskaźnikiem jest to, że otrzymujesz dziwne wyskakujące okienka, reklamy i komunikaty o błędach, zwłaszcza jeśli przekierowują Cię na pozornie podejrzane witryny.

Niestety oznaki ataku typu SQL injection nie zawsze są tak oczywiste. Jak wspomnieliśmy wcześniej, czasami hakerzy chcą użyć zastrzyków do kradzieży informacji, zamiast uszkadzać Twoją witrynę. Dlatego mogą stosować bardziej subtelne metody, które utrudniają wykrycie.

Narzędzia do wykrywania i skanowania iniekcji SQL

Jedynym sposobem, aby upewnić się, że jesteś celem, jest przeprowadzenie skanowania w Twojej witrynie. Na szczęście istnieje wiele narzędzi online, które mogą pomóc w wykrywaniu wstrzyknięć SQL w witrynie WordPress.

Na przykład możesz użyć Pentest Tools do przeprowadzenia dwóch bezpłatnych skanów swojej witryny.

Strona główna narzędzi PenTest

Dostępne są dwie opcje: Skanowanie lekkie lub Skanowanie pełne. W przypadku tych ostatnich musisz przejść na plan płatny. Po prostu wprowadź adres URL swojej witryny i kliknij przycisk Skanuj cel . Jeśli istnieją jakiekolwiek luki w zabezpieczeniach, skanowanie je ujawni.

Jak usunąć iniekcje SQL ze swojej witryny WordPress

1. Przywróć kopię zapasową

Najlepszym sposobem na usunięcie wstrzyknięć SQL jest przywrócenie kopii zapasowej witryny. Jeśli używasz Jetpack Backup, wszystko, co musisz zrobić, to użyć dziennika aktywności, aby określić, kiedy nastąpił atak, a następnie przywrócić kopię zapasową sprzed tego punktu. Twoja witryna zostanie przywrócona do stanu sprzed ataku hakerskiego.

Należy jednak pamiętać, że w niektórych przypadkach iniekcje SQL są wykonywane stopniowo, z biegiem czasu. Być może będziesz musiał cofnąć się dość daleko, aby znaleźć czystą kopię zapasową, co może spowodować utratę danych.

I chociaż przywrócenie kopii zapasowej może przywrócić działanie Twojej witryny, jeśli wrażliwe dane zostały skradzione, nadal będziesz musiał radzić sobie z konsekwencjami naruszenia.

2. Skorzystaj z usługi czyszczenia strony internetowej

Inną opcją jest skorzystanie z usługi czyszczenia witryny innej firmy, aby przeskanować witrynę i naprawić wszelkie wstrzyknięcia SQL. Sucuri to jedna opcja — po prostu prześlij swoją witrynę do ich zespołu i pozwól im zająć się wszystkim innym. Ponieważ są ekspertami, mogą usuwać złośliwe oprogramowanie z Twojej bazy danych skuteczniej niż przeciętny programista.

3. Samodzielnie usuń zastrzyki

Wreszcie, jeśli masz doświadczenie w zarządzaniu i pracy z MySQL, możesz ręcznie wyczyścić bazę danych. Pamiętaj jednak, że jest to zaawansowana technika i jeśli nie wiesz, co robisz, wprowadzanie jakichkolwiek zmian może prowadzić do problemów.

Jak zapobiegać wstrzykiwaniu SQL w przyszłości

Nie ma sposobu, aby upewnić się, że witryna jest w 100% bezpieczna, ale istnieją środki, które można podjąć, aby zminimalizować ryzyko ataku. Przyjrzyjmy się ośmiu metodom zapobiegania wstrzykiwaniu SQL w WordPress.

1. Zweryfikuj (lub zdezynfekuj) swoje dane

Kluczem do zapobiegania wstrzykiwaniu SQL do WordPressa jest zabezpieczenie każdego pola wejściowego, które może być użyte do wprowadzenia danych lub treści w Twojej witrynie. Obejmuje to sekcje komentarzy i formularze. Dlatego ważne jest, aby po przesłaniu zweryfikować i oczyścić dane wprowadzone w tych polach.

Walidacja danych wejściowych i sanityzacja pozwalają sprawdzić polecenia przesłane przez użytkowników. Oczyszczanie pozwala nawet na zmianę poleceń. Jest to skuteczny sposób na zapewnienie, że te polecenia nie zawierają złośliwego kodu ani ciągów znaków.

Walidacja zapewnia, że ​​informacje wprowadzone w formularzu są zgodne z żądanym formatem przed przetworzeniem żądania. Na przykład, jeśli masz pole wprowadzania adresu e-mail, dane nie zostaną zweryfikowane, jeśli nie będzie symbolu „@”.

Najłatwiejszym sposobem utworzenia walidacji danych formularza jest ustalenie reguł dla formularzy. Sposób wykonania tego będzie zależeć od konkretnej wtyczki, której używasz. Na przykład, jeśli korzystasz z wersji premium Formidable Forms, możesz dodać własny niestandardowy format maski wprowadzania dla pól tekstowych.

dodanie walidacji do pól formularzy w WordPress

Dodanie wymagań dotyczących formatu wejściowego może ograniczyć ryzyko wstrzyknięcia SQL. Oczyszczanie może pomóc w zapewnieniu, że wprowadzone dane są bezpieczne do przetwarzania po ich zweryfikowaniu.

Większość wtyczek formularzy WordPress automatycznie oczyszcza dane formularzy. Możesz jednak dodać dodatkowe środki bezpieczeństwa. Zamiast otwartych odpowiedzi, rozważ użycie menu rozwijanych i opcji wielokrotnego wyboru. Możesz także ograniczyć użycie znaków specjalnych.

2. Zainstaluj narzędzie zabezpieczające WordPress

Wtyczka bezpieczeństwa Jetpack WordPress może monitorować Twoją witrynę pod kątem luk, które mogą prowadzić do wstrzyknięć SQL. Daje to możliwość ich naprawienia, zanim ktoś to wykorzysta.

Dzięki monitorowaniu przestojów będziesz wiedzieć, w którym momencie Twoja witryna ulegnie awarii, dzięki czemu możesz szybko zareagować. A dzięki kopiom zapasowym w czasie rzeczywistym możesz w pełni przywrócić swoją witrynę.

Zapewnia również narzędzia bezpieczeństwa, takie jak:

  • Skanowanie złośliwego oprogramowania w poszukiwaniu plików WordPress, wraz z rozwiązywaniem większości problemów jednym kliknięciem
  • Rozwiązania antyspamowe chroniące Twoje komentarze i formularze kontaktowe
  • Ochrona przed atakami brute force, aby powstrzymać hakerów

3. Aktualizuj swoją stronę internetową i bazę danych przez cały czas

Korzystanie z przestarzałego oprogramowania i narzędzi może wprowadzić całą gamę luk w zabezpieczeniach witryny, które mogą wykorzystać hakerzy. Dlatego ważne jest, aby stale aktualizować swoją witrynę WordPress.

Obecnie prawie połowa instalacji WordPressa nie korzysta z najnowszej wersji. Dlatego warto rozważyć włączenie automatycznych aktualizacji, aby mieć pewność, że zawsze korzystasz z najnowszej wersji WordPressa.

Aby to zrobić w przypadku aktualizacji podstawowych, przejdź do wp-config.php w katalogu głównym Twojej witryny. Następnie skopiuj i wklej następujący fragment kodu do pliku:

 define( 'WP_AUTO_UPDATE_CORE', true );

Możesz włączyć automatyczne aktualizacje swoich wtyczek, przechodząc do Wtyczki ekran z panelu administratora. Następnie kliknij Włącz Aktualizacje automatyczne w skrajnej prawej kolumnie.

włączanie automatycznych aktualizacji w WordPress

Aby zminimalizować luki w zabezpieczeniach, zalecamy usunięcie wszelkich nieużywanych wtyczek lub motywów ze swojej witryny. Warto również zaktualizować wersję SQL. Jeśli używasz cPanel jako panelu sterowania hostingu, możesz zaktualizować oprogramowanie MySQL z pulpitu nawigacyjnego. W zależności od dostawcy hostingu możesz mieć możliwość włączenia automatycznych aktualizacji SQL.

4. Zmień prefiks bazy danych WordPress

Domyślnie za każdym razem, gdy instalujesz WordPress, CMS używa „wp_” jako prefiksu bazy danych. Zdecydowanie zalecamy zmianę tego na coś innego, ponieważ hakerzy mogą go wykorzystać do wykorzystania luk w zabezpieczeniach poprzez wstrzyknięcie SQL.

Przed rozpoczęciem należy wykonać kopię zapasową bazy danych. W ten sposób, jeśli coś pójdzie nie tak, masz bezpieczną wersję do przywrócenia.

Następnie połącz się z witryną za pośrednictwem klienta FTP lub Menedżera plików hosta i przejdź do pliku wp-config.php , który znajduje się w katalogu głównym witryny. W pliku poszukaj wiersza table_prefix, a następnie zmień „wp_” na coś innego:

 $table_prefix  = 'wp_a12345_';

Kiedy skończysz, zapisz plik. Otóż ​​to!

5. Użyj zapory

Inną strategią, której można użyć do ochrony przed wstrzyknięciem SQL, jest zainstalowanie zapory. Jest to system bezpieczeństwa sieci, który pomaga monitorować i kontrolować dane wchodzące do witryny WordPress. Może to wyłapać i odfiltrować złośliwy kod, w tym te pochodzące z ataków typu SQL injection.

Istnieje wiele różnych narzędzi zapory WordPress, z których możesz korzystać. Niektóre popularne opcje to Wordfence i Sucuri. Narzędzia te nie zapobiegną przesyłaniu poleceń przez atakujących, ale mogą pomóc w zablokowaniu faktycznego dostępu do Twojej witryny.

6. Ukryj wersję WordPressa, której używasz

Udostępnienie publicznie wersji witryny WordPress może ułatwić atakującym wykorzystanie znanych luk w zabezpieczeniach, ponieważ każda wersja ma swój własny zestaw. Dlatego, aby chronić swoją witrynę, zalecamy ukrycie używanej wersji.

Jest to szybkie i łatwe. Aby rozpocząć, po prostu skopiuj następujący fragment kodu:

 remove_action('wp_head', 'wp_generator');

Następnie przejdź do pliku functions.php bieżącego motywu WordPress. Możesz to zrobić bezpośrednio z Edytora motywów w WordPressie, używając klienta FTP lub używając Menedżera plików hosta. Wklej kod w pliku, a następnie zapisz zmiany.

7. Wyeliminuj niepotrzebną funkcjonalność bazy danych

Im więcej funkcji ma Twoja baza danych WordPress, tym bardziej jest podatna na atak. Aby zminimalizować ryzyko iniekcji SQL, rozważ normalizację bazy danych i wyeliminowanie wszelkich niepotrzebnych funkcji i treści.

W skrócie, normalizacja bazy danych odnosi się do procesu porządkowania danych. Celem tego jest wyeliminowanie wszelkich nadmiarowych danych w bazie danych i upewnienie się, że wszystkie zależności danych mają sens. Możesz to zrobić, umieszczając swoją bazę danych w First Normal Form.

Jeśli chcesz mieć bardziej przyjazną dla początkujących opcję czyszczenia bazy danych WordPress, możesz użyć wtyczki. Do wyboru jest kilka solidnych opcji, takich jak WP-Optimize.

Ta wtyczka freemium pomaga wyczyścić bazę danych bez konieczności ręcznego uruchamiania poleceń SQL przez phpMyAdmin. Zamiast tego możesz go użyć do optymalizacji bazy danych bezpośrednio z pulpitu WordPress.

opcje optymalizacji tabeli bazy danych

Usuwa wszystkie niepotrzebne informacje z Twojej bazy danych, w tym śmieci i niezatwierdzone komentarze. WP-Optimize umożliwia również defragmentację tabel bazy danych MySQL za pomocą jednego kliknięcia.

8. Ogranicz dostęp i uprawnienia użytkowników

Możesz przypisać różne role użytkownikom WordPressa w swojej witrynie. Mogą się one wahać od subskrybenta do administratora. W każdej roli możesz kontrolować, jaki zakres dostępu jest przyznawany i jakie „możliwości” są im przyznawane.

Aby wzmocnić swoje bezpieczeństwo, najlepiej ograniczyć liczbę ról z pełnym dostępem administratora i uprawnieniami użytkownika. Im mniej osób jest w stanie zmieniać i wprowadzać dane, tym mniej prawdopodobne jest, że staniesz przed atakiem typu SQL injection.

Aby dostosować role i uprawnienia użytkowników w WordPressie, przejdź do Użytkownicy → Wszyscy użytkownicy .

Użytkownicy WordPressa w desce rozdzielczej

Następnie kliknij link Edytuj pod nazwą użytkownika, dla którego chcesz ograniczyć dostęp i uprawnienia. Na następnym ekranie możesz zmienić ich rolę za pomocą menu rozwijanego Rola .

Podczas zarządzania rolami użytkownika WordPress zalecamy również usunięcie wszelkich kont, które nie są już używane. Wyeliminowanie przestarzałych ról może zminimalizować twoje podatności.

9. Unikaj używania pustych wtyczek

Zerowane wtyczki to narzędzia premium, które zostały skradzione i są oferowane za darmo. Choć mogą się wydawać, że to świetna okazja, nie tylko krzywdzisz oryginalnego programistę, nie płacąc mu za jego pracę, ale także ryzykujesz włamaniem.

Zerowane wtyczki są bardzo często pełne złośliwego kodu i tylnych drzwi, które zapewniają hakerom łatwą bramę do Twojej witryny. Unikaj ich za wszelką cenę i zamiast tego używaj wtyczek z renomowanych źródeł.

Chroń swoją witrynę WordPress przed wstrzyknięciami SQL

Aby chronić swoją witrynę i dane przed cyberprzestępcami, należy znać niektóre z najpopularniejszych metod uzyskiwania dostępu do witryny. Jeśli chodzi o wzmacnianie bezpieczeństwa bazy danych, oznacza to dobrą znajomość wstrzyknięć SQL.

Jak omówiliśmy w tym poście, wstrzyknięcie SQL może mieć szkodliwy wpływ na Twoją witrynę WordPress, od ujawnienia poufnych danych po utratę treści i przychodów. Na szczęście istnieje kilka kroków, które można podjąć, aby wykryć, usunąć i zapobiec atakom polegającym na wstrzykiwaniu.

Żadna strona internetowa nigdy nie jest całkowicie bezpieczna, ale postępując zgodnie z powyższymi wskazówkami i technikami, możesz znacznie zmniejszyć swoje szanse na bycie ofiarą wstrzyknięć SQL.