Szesnaście wskazówek dotyczących bezpieczeństwa dla twórców wtyczek i motywów WordPress

Opublikowany: 2021-10-19

Nigdy nie można być zbyt ostrożnym!

Dużą częścią naszej pracy jako programistów jest upewnienie się, że tworzone przez nas witryny i wtyczki są bezpieczne.

Firmy potrzebują szybszych rozwiązań o coraz bardziej złożonej funkcjonalności. Chociaż jest to dobry postęp, budowanie złożonych projektów wymaga również odpowiedniej konfiguracji zabezpieczeń. Bezpieczeństwo WordPressa to jeden z najważniejszych aspektów tworzenia stron internetowych.

Wraz ze wzrostem złożoności funkcji wielu programistów pomija podstawowe zasady bezpieczeństwa tworzenia witryn i aplikacji internetowych. Powoduje to wadliwą stronę internetową, która jest otwarta na cyberataki i inne zagrożenia.

Dlatego ważne jest, aby podczas tworzenia projektu zaimplementować podstawowe protokoły bezpieczeństwa tworzenia witryn i aplikacji internetowych.
Poniżej znajduje się 16 wskazówek dotyczących bezpieczeństwa dla twórców stron internetowych, które pomogą zapewnić bezpieczeństwo witryny.

1. Dowiedz się, jakie dane wymagają ochrony

Jedną z najważniejszych zasad bezpieczeństwa tworzenia witryn internetowych jest to, że wystarczy przechowywać niezbędne dane.
Kiedy tworzysz projekt, musisz zadać te trzy pytania:

  • Jakie dane firma musi przechowywać?
  • Jakie dane wrażliwe firma musi zaszyfrować?
  • Jeśli z jakiegoś powodu dane zostaną naruszone, jak bardzo może to zaszkodzić firmie?

Im bardziej wrażliwe dane przechowujesz, tym większe ryzyko ujawnienia. Jeśli musisz przechowywać poufne dane, musisz je zaszyfrować, aby dostęp do nich był utrudniony.

2. Wdróż zarządzanie rolami i kontrolę dostępu

Projektując stronę internetową, wtyczkę czy motyw, ważne jest, aby zapewnić użytkownikom możliwie najniższe uprawnienia.

Uprawnienia powinny być ograniczone, aby użytkownik otrzymywał tylko to, czego potrzebuje i nie miał dostępu do innych obszarów.

Na przykład współtwórcy powinni być ograniczeni do tworzenia nowych postów i stron, ale nie do ich publikowania. Redaktorzy powinni mieć możliwość tworzenia i publikowania nowych postów, ale nie powinni mieć możliwości zmiany projektu ani wtyczek.

Podobnie, rozwijając określoną funkcjonalność we wtyczce lub motywie, którą chcesz ograniczyć, upewnij się, że podczas instalacji tworzysz nowe role użytkownika WordPress. Poinformuj o nich administratorów, aby odpowiednie role zostały przypisane odpowiednim użytkownikom, którzy będą korzystać z wtyczki lub motywu, który rozwijasz.

Oto szybkie przedstawienie graficzne tego, jak wygląda struktura.

Struktura zarządzania rolami i kontroli dostępu

Takie podejście minimalizuje problemy, ponieważ możemy ograniczyć szkody, jakie może wyrządzić intruz. Możesz także ograniczyć szkody spowodowane błędami lub pomyłkami przez ciekawskiego użytkownika bawiącego się w obszarach witryny, w których tak naprawdę nie powinno być.

Musisz również ograniczyć dostęp w zespole programistów w zależności od ich roli.

3. Zastosuj uwierzytelnianie

Uwierzytelnianie witryny to proces bezpieczeństwa, który umożliwia użytkownikom weryfikację swojej tożsamości w celu uzyskania dostępu do zastrzeżonych obszarów witryny.

Podczas opracowywania motywu lub wtyczki będziesz mieć pewne dane, które należy ograniczyć, podczas gdy niektóre dane są widoczne dla użytkowników. Dlatego ważne jest, aby dodać sprawdzenia w kodzie, aby sprawdzić, czy użytkownik uzyskujący dostęp do danych zastrzeżonych jest uwierzytelniony i ma poprawną rolę użytkownika.

Podobnie, budując witrynę internetową, możesz wdrożyć skuteczne praktyki zarządzania kontami, takie jak silne egzekwowanie haseł i uwierzytelnianie wieloskładnikowe w celu ochrony danych użytkownika.

Uwierzytelnianie dwuskładnikowe to jeden z najpopularniejszych sposobów wdrażania uwierzytelniania.

Uwierzytelnianie dwuskładnikowe (2FA) to proces dwuetapowy, w którym oprócz hasła do witryny potrzebny jest dodatkowy kod lub hasło jednorazowe (OTP), aby zalogować się do witryny. To hasło jednorazowe jest zwykle wysyłane na inne urządzenie za pomocą wiadomości tekstowej, połączenia telefonicznego lub uznanej aplikacji 2FA, takiej jak Google Authenticator, Authy, Duo Security i wielu innych. Wdrożenie 2FA chroni Cię przed atakami typu brute force.

Jeśli budujesz swoją witrynę w WordPressie, wypróbuj te niesamowite narzędzia, które pozwolą Ci zabezpieczyć Twoją witrynę.

  • Ogranicz próby logowania: To narzędzie chroni przed atakami typu brute-force, ograniczając liczbę prób logowania. Obejmuje również antyspam i automatyczne wylogowanie nieaktywnych użytkowników.
  • WP2 FA: Wtyczka WP2FA umożliwia natychmiastowe dodanie do witryny uwierzytelniania dwuskładnikowego. Obsługuje również wiele aplikacji 2FA, takich jak Google Authenticator, Authy, FreeOTP, Duo Security i kilka innych.
  • Shield Security: Ta wtyczka nie obsługuje aplikacji 2FA, takich jak Google Authenticator i SMS 2FA, jednak jest przydatna dla tych, którzy używają YubiKey.
  • WPassword: Ta wtyczka pomaga wymusić silne hasła do witryny WordPress, blokować użytkowników ze zbyt dużą liczbą nieudanych prób logowania i nie tylko. Bezproblemowo integruje się z WooCommerce i innymi wtyczkami innych firm.

4. Sprawdź swój motyw lub wtyczkę przed wydaniem

Przed wydaniem motywu lub wtyczki musisz upewnić się, że Twój kod jest tak wolny od błędów, jak to tylko możliwe. Możesz użyć pewnych zależności kompozytora, aby wykryć wszelkie luki w kodzie.

Niektóre z zalecanych zależności dla witryn WordPress to:

  • Wpthemerreview
  • Wp-standardy kodowania

Te standardy kodowania mają ścisłe zasady kodowania, takie jak zawsze unikanie danych przed ich wydrukowaniem, używanie jednorazowych dla wszystkich żądań, oczyszczanie danych żądania przed ich użyciem, zapewnianie odpowiednich uprawnień użytkownika i wiele innych, aby pomóc zabezpieczyć kod.

Te narzędzia są świetne, jeśli tworzysz własny motyw lub wtyczkę.

Powinieneś także sprawdzić WPScan Security Scanner. Jest to świetny skaner bezpieczeństwa witryn internetowych, który sprawdza Twoją witrynę pod kątem wszelkich luk w zabezpieczeniach.

5. Unikaj niektórych funkcji PHP

Niektóre funkcje PHP, takie jak eval() i unserialize(), mogą ujawnić dane systemowe i doprowadzić do ujawnienia danych serwera, co może spowodować zamknięcie serwera lub uzyskanie dostępu do wszystkich informacji serwera od hakera.

Oto kilka funkcji PHP, których powinieneś unikać, jeśli to możliwe:

eval() : eval może wykonać dowolny kod PHP. Niewłaściwe użycie może narazić kody na ataki polegające na wstrzykiwaniu.

serialize() lub unserialize(): Nie używaj serialize() ani unserialize() z danymi wejściowymi podanymi przez użytkownika. Atakujący mogą wykorzystać te funkcje. Mogą przekazać ciąg z serializowanym dowolnym obiektem, aby uruchomić dowolny kod.

md5() : Internet jest pełen recenzji o słabościach kryptograficznych md5() 1 i jest uważany za niepewny. Użyj lepszej funkcji mieszającej, takiej jak SHA-2.

sha1() : sha1() to kolejna funkcja mieszająca, której nie należy używać ze względu na szybką naturę algorytmów mieszających. Zaleca się używanie algorytmu mieszającego SHA-2 zamiast md5() w każdym nowoczesnym frameworku.

6. Użyj linterów, aby znaleźć problemy w kodzie

Narzędzie lint to podstawowy statyczny analizator kodu, który sprawdza kod źródłowy pod kątem błędów programistycznych i stylistycznych. Wyjściowy ton głosu Linter powinien być przyjazny, aby projekt posuwał się do przodu.

Kody lint to świetny sposób na znalezienie potencjalnych luk w zabezpieczeniach i ograniczenie błędów podczas tworzenia strony internetowej lub aplikacji. Możesz użyć pewnych linters bezpieczeństwa do programowania PHP, JS i HTML.

Oto kilka godnych uwagi narzędzi do statycznej analizy kodów PHP:

  • PHP-Parallel-Lint
  • SonarLint
  • Psalm
  • PHP Lint

Możesz również użyć SonarLint do lintingu HTML i Javascript.

Innymi godnymi uwagi lintersami JS są:

  • JS Lint
  • ES Lint

7. Usuń nieużywany kod i wtyczki

Wraz z coraz bardziej złożonym oprogramowaniem wzrasta również potencjał luk w kodzie. Motywy i wtyczki WordPress nie różnią się od siebie. Stale rozwijające się funkcje kodów, takie jak HTML5, CSS i JavaScript, umożliwiają programistom tworzenie rozbudowanych aplikacji internetowych.

Jednak rosnąca złożoność aplikacji to miecz obosieczny. Pomagają one w dostarczaniu funkcji, których oczekują użytkownicy, ale także rozszerzają obszar ataków aplikacji. Jednym ze sposobów radzenia sobie z taką podatnością jest usunięcie kodu, który nie jest używany.

Różni użytkownicy mogą nie potrzebować wszystkich funkcji ze strony internetowej lub aplikacji internetowej. Usuwając niepotrzebne funkcje w oparciu o wymagania użytkownika w każdym wdrożeniu, można zmniejszyć powierzchnie ataków i związane z nimi ryzyko.

Jeśli lubisz tworzyć strony internetowe w WordPressie, zalecamy korzystanie z motywów i wtyczek, które spełniają Twoje potrzeby, a jednocześnie są lekkie pod względem kodu. Nie tylko zapewniają bezpieczeństwo Twojej witryny, ale także pomagają w optymalizacji pod kątem wyszukiwarek. Oto niektóre z najlepszych dostępnych lekkich i najszybszych motywów WordPress.

8. Użyj walidacji po stronie serwera i klienta

Jeśli jesteś osobą, która uwielbia pisać niestandardowe kody, konieczne jest stosowanie walidacji zarówno po stronie klienta, jak i po stronie serwera. Walidacja po stronie klienta pomaga chronić przed popełnianiem typowych błędów przez użytkownika, takich jak nieprawidłowe wprowadzanie danych lub zapominanie pól. Taka walidacja wychwytuje nieprawidłowe dane, zanim dotrą do serwera, oszczędzając czas i pieniądze.

Wyobraź sobie, że jeśli weryfikacja po stronie klienta nastąpi dopiero po niepowodzeniu podróży w obie strony do serwera, napotkasz opóźnienia informujące użytkowników o tym, co zrobili źle, bez możliwości natychmiastowego naprawienia błędów.

Jednak sama walidacja po stronie klienta nie wystarczy jako środek bezpieczeństwa. Musisz także użyć walidacji po stronie serwera. Walidacja po stronie serwera chroni przed złośliwymi danymi wejściowymi i innymi wektorami ataków.

9. Oczyść wszelkie dane wprowadzane przez użytkownika i żądaj danych

Oczyszczanie danych wejściowych użytkownika to środek bezpieczeństwa cybernetycznego polegający na kontrolowaniu, czyszczeniu i filtrowaniu danych pochodzących od użytkowników i interfejsów API z wszelkich nieautoryzowanych lub niechcianych znaków i ciągów znaków, aby zapobiec wstrzyknięciu szkodliwego kodu do systemu.

Hakerzy mogą wstrzykiwać określone polecenia i wykonywać działania, które mogą zagrozić bezpieczeństwu Twojej witryny. Oczyszczanie danych wejściowych pomaga zachować integralność danych i poprawia bezpieczeństwo systemu.

10. Zastosuj stałe poprawki

Podczas sprawdzania bezpieczeństwa możesz zauważyć pewne luki, które od czasu do czasu pojawiają się ponownie. Musisz określić główną przyczynę nowych luk w zabezpieczeniach, aby móc je trwale usunąć zamiast dodawać częściową poprawkę.

Na przykład bardzo często możesz natknąć się na problemy SQL / XSS w motywie lub wtyczce, którą tworzysz. W takim przypadku, zamiast budować kontrolę czystości dla każdego wejścia, zbuduj funkcję/klasę i ustaw zasadę, że za każdym razem, gdy jest wejście użytkownika, wszystkie dane powinny być przekazywane przez tę klasę/funkcję.

11. Unikaj błędnych konfiguracji zabezpieczeń i ustawień domyślnych

Błędy w konfiguracji zabezpieczeń mają miejsce, gdy ustawienia zabezpieczeń nie są zdefiniowane i zaimplementowane, a wartości domyślne są zachowywane. Niezaimplementowanie kontroli bezpieczeństwa lub zaimplementowanie ich z błędami może zwiększyć prawdopodobieństwo wystąpienia luk w utworzonym motywie, wtyczce lub witrynie internetowej.

Błędna konfiguracja często ma miejsce, ponieważ system, administrator bazy danych lub programista nie skonfigurował poprawnie struktury aplikacji, co prowadzi do niebezpiecznych otwartych ścieżek dla hakerów.

Upewnij się, że domyślna konfiguracja jest bezpieczna i nie ustawiaj automatycznie haseł (jeśli jest to wymagane). Na przykład, jeśli wtyczka korzysta z katalogu, w którym użytkownicy mogą przesyłać pliki, zawsze poproś użytkowników o ustawienie haseł i ścieżki do katalogu.

12. Bądź na bieżąco i na bieżąco

Cyberbezpieczeństwo to stale ewoluująca dziedzina. Musisz być świadomy najnowszych aktualizacji zabezpieczeń i pojawiających się zagrożeń, aby być na bieżąco z rozwojem i ograniczać nowe i pojawiające się zagrożenia w swoim kodzie.

Jako programista pomaga być na bieżąco z nowościami i pisać bezpieczniejszy kod, jakie są najlepsze praktyki w zakresie bezpiecznego kodowania, lepszego oczyszczania kodu i lepszej obsługi danych wprowadzanych przez użytkownika.

Aby to zrobić, śledź ekspertów online i bądź na bieżąco z ulubionym blogiem poświęconym tworzeniu stron internetowych. Już czytasz ten. Więc masz dobry początek.

Oto niektóre z najlepszych zasobów na temat bezpieczeństwa WordPress.

  • Blog WP White Security
  • Blog WordFence
  • Blog Sucuri

13. Utrzymaj kod!

Kod, który napiszesz dzisiaj, jutro może nie być bezpieczny. Wciąż pojawiają się nowe warianty luk w zabezpieczeniach, które również wymagają ciągłych aktualizacji ze strony programisty.

Dodając nowe funkcjonalności do wtyczki lub motywu, sprawdź, czy nie wpływa to na bezpieczeństwo innych modułów lub klas lub funkcji w kodzie. Jeśli tak, musisz zaktualizować kod, aby rozwiązać problemy.

Możesz także użyć narzędzi takich jak GitHub, aby zachować kod swojego motywu lub wtyczki. Pomoże Ci śledzić kod i szybciej naprawiać problemy. Bezpieczeństwo zawsze ewoluuje. Aby nadążać za najnowszymi trendami, konieczne jest ciągłe odnawianie testów bezpieczeństwa, dzięki czemu można znaleźć luki w zabezpieczeniach i je poprawić.

14. Regularnie aktualizuj swoje pakiety oprogramowania

To nie wymaga myślenia.

Aktualizowanie pakietów oprogramowania, takich jak PHP, JavaScript, HTML i inne, pomaga rozwiązać nowe problemy z bezpieczeństwem. Poprawa bezpieczeństwa oprogramowania jest zawsze stałym problemem, dlatego zawsze jesteśmy na bieżąco z najnowszą wersją takiego oprogramowania.

15. Współpracuj ze swoim zespołem

Zwróć uwagę na zgłoszenia bezpieczeństwa, które są zgłaszane Twojemu zespołowi pomocy technicznej. Jeśli Twoi klienci zgłaszają jakiekolwiek problemy z bezpieczeństwem, ich rozwiązanie powinno być priorytetem. Twój użytkownik końcowy przekazuje najlepszą opinię na temat Twojej pracy, więc wykorzystaj ją dobrze!

Przedyskutuj problemy z bezpieczeństwem z zespołem programistów i upewnij się, że każda poprawka, którą opracujesz, naprawia problem bezpieczeństwa i nie zepsuje niczego innego przed upublicznieniem. Jeśli potrzebujesz często współpracować z kolegami z zespołu lub pracować z dużymi klientami, których wsparciem zajmują się całe działy, dobrym pomysłem jest skorzystanie z oprogramowania do webinarów, które usprawni ten proces.

16. Przygotuj się na najgorszy scenariusz

Nie możesz być zbyt ostrożny. Sieć i wszystko, co publikowane w sieci, nigdy nie może być w 100% bezpieczne. Możesz jednak podjąć kroki, które mogą pomóc złagodzić ryzyko.

Kluczem jest ocena potencjalnych słabych punktów i opracowanie odpowiedniej reakcji na ryzyko z odpowiednimi środkami bezpieczeństwa. Często pojawiają się nowe techniki ataków, więc najlepsze praktyki muszą również ewoluować w ramach tego procesu.

Na przykład, jeśli witryna WordPress zostanie zhakowana, plan awaryjny powinien zawierać, co zrobić w przypadku włamania. Musiałoby to zawierać metody tworzenia kopii zapasowych, proces czyszczenia i kroki wymagane do odbudowania witryny i usługi przywracania.

Taki plan pozwoli wszystkim interesariuszom na szybkie naprawienie rzeczy bez przytłoczenia nadmiarem informacji lub nadmiernej reakcji z niepotrzebnymi działaniami.

Końcowe przemyślenia

Co jeszcze możesz zrobić, aby poprawić bezpieczeństwo swojego motywu lub wtyczki? Cóż, dużo rzeczy. Widzisz, pisanie bezpiecznego kodu nie jest sprawą jednorazową. Technologie ewoluują, a wraz z nim ewoluują metody ataków.

W rzeczywistości nie można zapobiec wszystkim cyberatakom ani złagodzić każdego możliwego ryzyka. Twoim celem powinno być zrobienie jak najwięcej z tym, co masz, i ciągłe przeglądanie kodu, aby go ulepszać.

Zbuduj dobrze zdefiniowany plan bezpieczeństwa dla swojej witryny i przygotuj się na najgorsze. Upewnij się, że zgłoszenia lub raporty związane z bezpieczeństwem mają najwyższy priorytet.

Opublikuj post na blogu lub ogłoszenie w swojej społeczności, że wydałeś poprawkę zabezpieczeń, aby wszyscy użytkownicy mogli aktualizować i uniknąć narażenia ich witryn internetowych.

Cyberbezpieczeństwo nie różni się zbytnio od strategii wojskowej. Kluczem jest gotowość! Mam nadzieję, że ten post pomógł ci w przygotowaniu. Daj nam znać w komentarzach, jakie środki podejmujesz, aby poprawić bezpieczeństwo swojej witryny.

Referencje użyte w tym artykule [ + ]

Referencje użyte w tym artykule
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C