Zabezpieczenie witryny WordPress przed atakami typu SQL injection jest niezbędne do ochrony danych i utrzymania zaufania odwiedzających.
Wstrzykiwanie kodu SQL to powszechna technika wykorzystywana przez hakerów do atakowania baz danych. Gdy to zrobią, hakerzy mogą odczytać poufne dane, zmodyfikować je i przejąć kontrolę nad całą bazą danych.
Aby chronić swoją witrynę przed tym zagrożeniem, ważne jest, aby wdrożyć w niej silne środki bezpieczeństwa.
W WPBeginner traktujemy bezpieczeństwo bardzo poważnie i dołożyliśmy wszelkich starań, aby chronić naszą witrynę przed hakerami i złośliwym oprogramowaniem. Wiele praktyk bezpieczeństwa, które zalecamy przed atakami SQL injection, to metody, które sami z powodzeniem stosowaliśmy.
W tym artykule podzielimy się kilkoma praktycznymi wskazówkami, jak krok po kroku zapobiegać atakom SQL injection w WordPress.
Dlaczego warto zapobiegać atakom SQL Injection w WordPress?
SQL to skrót od Structured Query Language, który jest językiem programowania komunikującym się z bazą danych witryny WordPress. Bez tej funkcji witryna nie może generować żadnych dynamicznych treści.
Jednak nieautoryzowane dane wprowadzane przez użytkowników, nieaktualne oprogramowanie lub ujawnianie poufnych informacji może powodować luki w zabezpieczeniach i ułatwiać hakerom przeprowadzanie ataków SQL injection.
Atak ten jest wymierzony w twój serwer bazy danych i dodaje złośliwy kod lub instrukcje do twojego SQL. W ten sposób hakerzy mogą wykorzystać poufne informacje przechowywane w twojej bazie danych, takie jak dane użytkownika, do kradzieży tożsamości, przejęcia konta, oszustw finansowych i innych.
Mogą również zmieniać wpisy w bazie danych lub uprawnienia konta i przeprowadzać ataki DDoS, utrudniając rzeczywistym użytkownikom odwiedzanie witryny.
Może to zaszkodzić zaufaniu klientów, negatywnie wpłynąć na doświadczenia użytkowników i zmniejszyć ruch w witrynie, co będzie niekorzystne dla rozwoju małej firmy.
Powiedziawszy to, przyjrzyjmy się kilku możliwym do zastosowania wskazówkom, które mogą zapobiec atakom SQL injection w WordPress. Oto krótki przegląd tego, o czym będziemy mówić w tym artykule:
- Perform Site Updates Regularly And Use a Firewall
- Hide Your WordPress Version
- Change the WordPress Database Prefix
- Validate User Data
- Limit User Role Access and Permissions
- Create Custom Database Error Messages
- Remove Unnecessary Database Functionality
- Bonus: Use WPBeginner Pro Services to Create a Secure Site
Uwaga: Przed wprowadzeniem jakichkolwiek zmian w twojej bazie danych w celach zapobiegawczych zalecamy utworzenie jej kopii zapasowej. W ten sposób, jeśli coś pójdzie nie tak, możesz użyć kopii zapasowej, aby to poprawić. Aby uzyskać szczegółowe informacje, zapoznaj się z naszym poradnikiem na temat ręcznego tworzenia kopii zapasowej bazy danych WordPress.
1. Regularne aktualizacje witryny i korzystanie z zapory sieciowej
Skutecznym sposobem zapobiegania atakom SQL injection jest regularne aktualizowanie twojej witryny WordPress do najnowszej wersji. Aktualizacje te często łatają luki w zabezpieczeniach, w tym problemy z oprogramowaniem bazy danych, utrudniając hakerom atak na twoją witrynę.
Jeśli korzystasz z nieaktualnej wersji WordPressa, zalecamy włączenie automatycznych aktualizacji do najnowszej wersji, przechodząc na stronę Kokpit ” Aktualizacje.
Tutaj wystarczy kliknąć link „Włącz automatyczne aktualizacje dla wszystkich nowych wersji WordPress”. Teraz wszystkie główne aktualizacje będą instalowane w witrynie po ich wydaniu.
Aby uzyskać więcej informacji, warto zapoznać się z naszym przewodnikiem dla początkujących na temat bezpiecznej aktualizacji WordPressa.
Gdy już to zrobisz, możesz również dodać zaporę sieciową dla dodatkowego zabezpieczenia. Funkcja ta działa jak tarcza między twoją witryną a ruchem przychodzącym i blokuje typowe zagrożenia bezpieczeństwa, w tym ataki SQL, zanim dotrą one do twojej witryny internetowej.
Jeśli prowadzisz małą firmę online, polecamy Sucuri, który jest jedną z najlepszych opcji oprogramowania zapory WordPress na rynku. Oferuje on zaporę ogniową na poziomie aplikacji, zapobieganie atakom typu brute force, a także usługi usuwania złośliwego oprogramowania i czarnych list, co czyni go doskonałym wyborem.
Mamy własne doświadczenia z tym narzędziem. W przeszłości pomogło nam nawet zablokować 450 000 ataków WordPress na naszą stronę internetową.
To powiedziawszy, Sucuri może nie być wystarczająco potężne dla większych witryn o dużym natężeniu ruchu. W takim przypadku warto rozważyć Cloudflare, który zapewnia funkcje bezpieczeństwa, a także imponującą sieć dostarczania treści (CDN).
Jeśli nie masz pewności, która opcja jest najlepsza dla Twojej witryny, zapoznaj się z naszym artykułem o tym, dlaczego przeszliśmy z Sucuri na Cloudflare lub naszym porównaniem Sucuri vs Cloudflare.
2. Ukryj swoją wersję WordPressa
Domyślnie WordPress wyświetla obecny, aktualny numer wersji oprogramowania, którego używasz na twojej witrynie internetowej. Na przykład, jeśli używasz WordPress 6.4, to ta wersja będzie wyświetlana na twojej witrynie w celu śledzenia.
Publiczna widoczność numeru wersji może jednak stwarzać zagrożenia dla bezpieczeństwa i ułatwiać hakerom przeprowadzanie ataków typu SQL injection na WordPress.
Dzieje się tak, ponieważ każda wersja WordPressa ma swoje unikatowe luki, które atakujący mogą wykorzystać po odkryciu twojej wersji. Pozwoli im to na dodanie złośliwych fragmentów kodu do twojej witryny za pośrednictwem podatnych na ataki pól wejściowych.
Możesz łatwo usuwać numer wersji ze swojej witryny, dodając następujący fragment kodu do pliku functions.php.
add_filter('the_generator', '__return_empty_string');
Gdy to zrobisz, hakerzy nie będą w stanie znaleźć twojego numeru wersji WordPressa za pomocą automatycznych skanerów ani w żaden inny sposób.
Uwaga: Należy pamiętać, że drobny błąd podczas dodawania kodu może sprawić, że twoja witryna internetowa będzie niedostępna. Dlatego polecamy WPCode. Jest to najlepsza wtyczka do fragmentów kodu, która sprawia, że dodawanie własnego kodu do twojej witryny jest bardzo bezpieczne i łatwe.
Więcej szczegółów można znaleźć w naszym poradniku na temat właściwego sposobu usuwania numeru wersji WordPressa.
3. Zmiana prefiksu bazy danych WordPress
Domyślnie WordPress dodaje przedrostek wp_ do wszystkich twoich plików bazy danych, co ułatwia hakerom zaplanowanie ataku poprzez celowanie w ten przedrostek.
Najprostszym sposobem zapobiegania atakom SQL injection jest zmiana domyślnego prefiksu bazy danych na coś unikatowego, czego hakerzy nie będą w stanie odgadnąć.
Możesz to łatwo zrobić, łącząc twoją witrynę internetową za pomocą FTP. Następnie otwórz plik wp-config.php i znajdź zmienioną linię $table_prefix
. Następnie możesz zmienić go z domyślnego wp_
na coś innego, na przykład: wp_a123456_
.
$table_prefix = 'wp_a123456_';
Następnie musisz odwiedzić cPanel swojego konta hostingowego. W tym poradniku będziemy korzystać z Bluehost. Jednak cPanel może wyglądać nieco inaczej w zależności od firmy hostingowej.
Tutaj przejdź do karty „Zaawansowane” i kliknij przycisk „Zarządzaj” obok sekcji „PHPMyAdmin”.
Spowoduje to otwarcie nowej strony, na której musisz wybrać nazwę bazy danych z lewej kolumny i przełączyć się na kartę „SQL” u góry.
Następnie można dodać następujące zapytanie SQL w polu tekstowym.
Pamiętaj tylko, aby zmienić prefiks bazy danych na ten, który wybrałeś podczas edycji pliku wp-config.php.
RENAME table `wp_comments` TO `wp_a123456_comments`;
RENAME table `wp_links` TO `wp_a123456_links`;
RENAME table `wp_options` TO `wp_a123456_options`;
RENAME table `wp_postmeta` TO `wp_a123456_postmeta`;
RENAME table `wp_RENAME table `wp_commentmeta` TO `wp_a123456_commentmeta`;
posts` TO `wp_a123456_posts`;
RENAME table `wp_terms` TO `wp_a123456_terms`;
RENAME table `wp_termmeta` TO `wp_a123456_termmeta`;
RENAME table `wp_term_relationships` TO `wp_a123456_term_relationships`;
RENAME table `wp_term_taxonomy` TO `wp_a123456_term_taxonomy`;
RENAME table `wp_usermeta` TO `wp_a123456_usermeta`;
RENAME table `wp_users` TO `wp_a123456_users`;
Więcej instrukcji można znaleźć w naszym poradniku na temat zmiany prefiksu bazy danych WordPress w celu poprawy zabezpieczeń.
4. Zatwierdzanie danych użytkownika
Hakerzy zazwyczaj wstrzykują ataki SQL w witrynie, wykorzystując pola do wprowadzania danych użytkownika, takie jak sekcje komentarzy lub pola formularzy kontaktowych.
Dlatego tak ważne jest, aby importować wszystkie dane przesyłane na blogu WordPress. Oznacza to, że dane użytkownika nie zostaną przesłane do witryny, jeśli nie będą zgodne z określonym formatem.
Na przykład, użytkownik nie będzie mógł przesłać formularza, jeśli pole adresu e-mail nie zawiera symbolu „@”. Dodając tę walidację do większości twoich pól formularzy, możesz zapobiec atakom typu SQL injection.
Aby to zrobić, będziesz potrzebował Formidable Forms, która jest zaawansowaną wtyczką do tworzenia formularzy. Jest ona wyposażona w opcję „Input Mask Format”, w której można dodać format, którego użytkownicy muszą przestrzegać, aby przesłać dane pola formularza.
Możesz dodać określony format dla numerów telefonów lub pojedynczych pól tekstowych.
Jeśli nie chcesz walidować pól formularza, polecamy WPForms, ponieważ jest to najlepsza wtyczka do formularzy kontaktowych, która jest w pełni zabezpieczona przed spamem i obsługuje Google reCAPTCHA.
Umożliwia również dodawanie rozwijanych menu i pól wyboru do formularzy, utrudniając hakerom dodawanie złośliwych danych.
Więcej szczegółów można znaleźć w naszym poradniku na temat tworzenia zabezpieczonego formularza kontaktowego w WordPress.
5. Ograniczenie dostępu i uprawnień ról użytkowników
Inną wskazówką zapobiegającą atakom WordPress SQL injection jest ograniczenie dostępu użytkowników do twojej witryny internetowej.
Na przykład, jeśli prowadzisz blog z wieloma autorami, będziesz mieć różnych autorów wraz z subskrybentami i administratorami. W takim przypadku można poprawić zabezpieczenia witryny, ograniczając pełny dostęp administratora tylko do niego.
Możesz ograniczyć wszystkie inne role użytkowników do określonych funkcji, których będą potrzebować do wykonywania swojej pracy. Ograniczy to dostęp użytkowników do twojej bazy danych i zapobiegnie atakom typu SQL injection.
Można to zrobić za pomocą darmowej wtyczki Remove Dashboard Access. Po aktywacji wystarczy odwiedzić stronę Ustawienia ” Dostęp do kokpitu, gdzie można zdecydować, które role użytkowników otrzymają dostęp do kokpitu.
Jeśli chcesz ograniczyć użytkowników w zależności od ich możliwości, możesz zapoznać się z naszym poradnikiem na temat dodawania lub usuwania możliwości z ról użytkowników w WordPress.
Podobnie, możesz również ograniczyć autorów do ich własnych wpisów w twoim obszarze administracyjnym dla większego zabezpieczenia.
6. Tworzenie własnych komunikatów o błędach w bazie danych
Czasami twoi importerzy mogą natknąć się na błąd bazy danych na twojej witrynie internetowej, który może wyświetlać ważne informacje o bazie danych, czyniąc ją podatną na ataki SQL injection.
W takim przypadku zalecamy utworzenie własnego komunikatu o błędzie bazy danych, który będzie wyświetlany klientom, gdy napotkają ten typowy błąd. Aby to zrobić, należy skopiować i wkleić poniższą treść do notatnika i zapisać plik jako „db-error.php”.
<?php // custom WordPress database error page
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 600'); // 1 hour = 3600 seconds
// If you wish to email yourself upon an error
// mail("your@email.com", "Database Error", "There is a problem with the database!", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Database Error</title>
<style>
body { padding: 20px; background: red; color: white; font-size: 60px; }
</style>
</head>
<body>
You got problems.
</body>
Następnie połącz swoją witrynę z programem FTP i prześlij utworzony plik do katalogu /wp-content/.
Teraz, gdy użytkownicy napotkają błąd bazy danych w witrynie, zobaczą komunikat o błędzie informujący ich o problemie bez ujawniania żadnych poufnych informacji.
Ponadto na karcie przeglądarki internetowej zostanie wyświetlony tytuł „Błąd bazy danych”.
Aby uzyskać więcej informacji, zapoznaj się z naszym poradnikiem na temat dodawania własnej strony błędu bazy danych w WordPress.
7. Usuwanie niepotrzebnych funkcji bazy danych
Aby zapobiec atakom SQL injection, powinieneś również starać się usuwać wszystkie funkcje bazy danych i pliki, które nie są potrzebne na twojej witrynie internetowej.
Możesz na przykład usunąć niepotrzebne tabele, kosze lub niezatwierdzone komentarze, które mogą uczynić twoją bazę danych podatną na ataki hakerów.
Aby usuwać niepotrzebne funkcje bazy danych, zalecamy WP-Optimize. Jest to niesamowita wtyczka, która usuwa niepotrzebne tabele, wersje postów, wersje robocze, usunięte komentarze, usunięte wpisy, pingbacki, metadane wpisów i wiele więcej.
Usuwa wszystkie niepotrzebne pliki i optymalizuje twoją bazę danych, aby była bardziej zabezpieczona i szybsza. Aby uzyskać szczegółowe informacje, zapoznaj się z naszym przewodnikiem dla początkujących, jak zoptymalizować twoją bazę danych WordPress.
Bonus: Skorzystaj z usług WPBeginner Pro, aby stworzyć witrynę z zabezpieczeniami
Po podjęciu wszystkich środków zapobiegawczych przeciwko atakom SQL injection, można również zdecydować się na WPBeginner Pro Services.
Pomożemy Ci zidentyfikować i poprawić wszelkie inne luki w zabezpieczeniach, o których nie wiesz. Ponadto, jeśli miałeś już do czynienia z atakiem SQL injection, nasi eksperci mogą pomóc ci powstrzymać szkody i odzyskać twoje systemy.
Możesz również zatrudnić nas do poprawy optymalizacji szybkości Twojej witryny, projektu, SEO, a nawet całkowitej przebudowy istniejącej witryny WordPress, niezależnie od tego, czy została zhakowana, czy nie.
Aby uzyskać więcej informacji, sprawdź wszystkie nasze profesjonalne usługi WPBeginner.
Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak zapobiegać atakom typu SQL injection w WordPress. Możesz również zapoznać się z naszym przewodnikiem dla początkujących na temat sprawdzania aktualizacji zabezpieczeń WordPressa lub naszym kompletnym przewodnikiem po zabezpieczeniach WordPressa.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
Jiří Vaněk
WordPress security is alpha and omega for me. Related to that is SQL, which I’ve never paid much attention to. Thanks for this list of great tips. I’m going to check my blog right away to see what I can improve according to your list. At least I’ll try to hide the version and so on.