Bezpieczne jak Fort Knox: Jak zabezpieczyć witrynę przed hakerami
Opublikowany: 2021-10-05W tym artykule oferujemy przewodnik, jak zabezpieczyć witrynę przed włamaniem i wykorzystaniem do nielegalnych działań.
Bezpieczeństwo w Internecie to ogromna czerwona flaga na nieskończonym błękitnym niebie Internetu. I chociaż słowa „bezpieczeństwo w Internecie” mogą przede wszystkim przywodzić na myśl nękanie w Internecie i ochronę użytkowników, istotne są również szkody, jakie brak zabezpieczeń witryny może mieć dla firmy. Właściciele stron internetowych, którzy tną wydatki na bezpieczeństwo, płacą reputacją, a tym samym ponoszą straty finansowe.
Zawartość:
- Dlaczego każdy właściciel strony internetowej musi inwestować w bezpieczeństwo
- O jakich lukach mówimy?
- Wady wtrysku
- Ekspozycja danych wrażliwych
- Ataki cross-site scripting (XSS)
- Uszkodzone uwierzytelnianie
- Błędna konfiguracja zabezpieczeń
- Uszkodzona kontrola dostępu
- Niebezpieczna deserializacja
- Niewystarczające rejestrowanie i monitorowanie
- Podmioty zewnętrzne XML (XXE)
- Korzystanie z komponentów ze znanymi podatnościami
- Jak stworzyć bezpieczną stronę internetową
- Ile kosztuje zabezpieczenie strony internetowej?
Dlaczego KAŻDY właściciel strony musi inwestować w bezpieczeństwo

Niektórzy właściciele witryn mają takie myśli: Na mojej stronie nie ma nic do kradzieży. Nie przechowuję żadnych danych użytkownika ani szczegółów płatności. Nie potrzebuję drogich zabezpieczeń z najwyższej półki.
Jednak to po prostu naiwne. Istnieje wiele powodów, dla których Twoja witryna może zostać zhakowana, nawet jeśli nie zawiera żadnych danych osobistych ani finansowych. Oto lista zastosowań, które hakerzy mogą mieć dla niemal każdego niechronionego serwera:
- Żądać okupu. Nawet jeśli nie przechowujesz żadnych danych użytkownika na swoich serwerach, hakerzy mogą je przejąć i zażądać od Ciebie pieniędzy, aby je odzyskać.
- Do użycia jako przekaźnik SMTP (prosty protokół przesyłania poczty). SMTP to protokół używany do masowego dostarczania wiadomości e-mail — na przykład biuletynów. Hakerzy mogą używać Twoich serwerów do wysyłania spamu lub oprogramowania ransomware.
- Kopać Bitcoiny.
- Do wykorzystania w atakach DDoS w ramach botnetu.
- Aby zmienić lub usunąć dane na swojej stronie internetowej. Powody, dla których chcesz to zrobić, mogą się różnić.
A to tylko drapanie powierzchni. Oprócz zagrożeń ze strony osób trzecich (hakerów i innych przestępców) istnieją również zagrożenia, jakie mogą nieść ewentualne błędy po stronie pracowników zarządzających Twoją stroną internetową. W rzeczywistości bezpieczeństwo wewnętrzne jest tak samo ważne jak zewnętrzne, jeśli nie bardziej.
Jak więc zabezpieczyć swoją witrynę przed hakerami? ty pytasz.
Cóż, musisz uwzględnić i poradzić sobie z wieloma lukami.
O jakich lukach mówimy?
Jednym z najbardziej renomowanych podmiotów w branży zajmujących się cyberbezpieczeństwem jest Open Web Application Security Project, w skrócie OWASP. Fundacja OWASP monitoruje i regularnie aktualizuje listę szeroko rozpowszechnionych problemów związanych z bezpieczeństwem sieciowym. Poniżej znajdują się typowe problemy bezpieczeństwa na ich liście (w dowolnej kolejności) na dzień pisania tego artykułu oraz kilka wskazówek, jak zmniejszyć zagrożenie dla Twojej witryny.
Wady wtrysku

Błędy wstrzykiwania dotyczą baz danych i są spowodowane słabą walidacją danych wejściowych. Gdy system akceptuje dane wejściowe użytkownika, ale nie filtruje ich prawidłowo, sprawia to, że system jest podatny na ataki — hakerzy mogą to wykorzystać, aby wstrzyknąć swój kod do systemu (stąd nazwa). Ten wstrzyknięty kod może spowodować, że Twoja witryna będzie wykonywała polecenia, których nie zamierzałaś robić, wyświetlając wrażliwe dane, a nawet oddając kontrolę nad witryną hakerowi.
Najpopularniejszy rodzaj podatności na wstrzyknięcie dotyczy baz danych SQL, ale podatności na wstrzyknięcia nie ograniczają się do nich. Zapytania XPath, instrukcje LDAP i skrypty XML również mogą być podatne na wstrzyknięcie.
Jak zabezpieczyć stronę przed błędami wstrzykiwania? Dwa najlepsze rozwiązania obejmują używanie oczyszczania zapytań SQL i zapytań parametrycznych. Istnieją interfejsy API, które pozwalają to zrobić.
Jeśli nie chcesz implementować tych rzeczy ręcznie, możesz użyć narzędzia ORM (mapowanie obiektowo-relacyjne) dla preferowanego języka programowania. Używamy ActiveRecord, ponieważ jest ściśle powiązany z ekosystemem Rails.
Żadna z powyższych opcji nie jest całkowicie niezawodna, ale w dzisiejszych czasach jest tak blisko, jak solidna ochrona.
Ekspozycja danych wrażliwych

Dane wrażliwe to wszelkie dane, które można wykorzystać do wykorzystania osoby w taki czy inny sposób:
- Nazwa
- Numer ubezpieczenia społecznego
- Numer prawa jazdy
- Informacje o karcie kredytowej
- Nazwy użytkowników i hasła
- Data urodzenia
- Informacje o zdrowiu
- Nazwisko panieńskie
- Imiona rodziców
Może nawet zawierać wszelkie informacje będące odpowiedzią na pytanie zabezpieczające, na przykład dotyczące Twojego konta bankowego. Kto by pomyślał, że imię twojego pierwszego zwierzaka można uznać za dane wrażliwe, prawda?
Zabezpieczanie stron internetowych przed narażeniem na wrażliwe dane jest trudne, ponieważ takie narażenie jest trudne do przewidzenia i wykrycia. Ale są środki zapobiegawcze, które możesz podjąć. Dane wrażliwe, jeśli są przechowywane na stronie internetowej, nigdy nie mogą być przechowywane jako zwykły tekst ; musi być zaszyfrowany przy użyciu najnowszej technologii i przesyłany wyłącznie bezpiecznymi kanałami.
Jeśli Twoja witryna umożliwia jakiekolwiek transakcje lub ogólnie zajmuje się danymi wrażliwymi, musi korzystać z szyfrowania SSL. Jest to najnowsza i najlepsza dostępna technologia szyfrowania. Szyfrowanie SSL pomaga bezpiecznie przesyłać dane między przeglądarką a serwerem lub między serwerami. Ponadto wielu użytkowników będzie szukało protokołu HTTPS w adresie Twojej witryny, aby sprawdzić, czy jest on bezpieczny. Ten nagłówek jest tym, co otrzymujesz po uzyskaniu certyfikatu SSL.
Ogólnie zaleca się również przechowywanie danych w chmurze. Nie zakładaj jednak, że samo przechowywanie ich w chmurze automatycznie sprawi, że dane będą bezpieczne. Mimo to należy wdrożyć wszystkie środki ochronne, a także regularnie monitorować i aktualizować zabezpieczenia.
Ataki cross-site scripting (XSS)
Luki XSS są w pewnym sensie podobne do błędów wstrzykiwania, ponieważ pozwalają hakerom wpływać na strony Twojej witryny poprzez wstrzykiwanie nienatywnego kodu. W przypadku XSS mówimy o wstrzykiwaniu JavaScript. JavaScript wstrzyknięty przez hakera może zmieniać zawartość strony, wstawiać linki do złośliwych stron internetowych i wysyłać pierwotnie ukryte dane z powrotem do hakera, co skutkuje ujawnieniem poufnych danych.
Ruby on Rails i React mają wbudowaną ochronę XSS. Inną opcją dla środków anty-XSS i anti-injection byłoby użycie nagłówka odpowiedzi HTTP Content-Security-Policy.
Uszkodzone uwierzytelnianie

Pierwotnie nazywana „Zepsutym uwierzytelnianiem i zarządzaniem sesją”, ta luka dotyczy luk w zabezpieczeniach podczas uwierzytelniania użytkowników i zarządzania sesją, co wynika z nazwy. Obejmuje to ujawnienie danych logowania i szereg problemów z identyfikatorami sesji:
- Słabe identyfikatory sesji
- Identyfikatory sesji wyświetlane w adresach URL
- Identyfikatory sesji, które nie zmieniają się między logowaniami
- Przesyłanie identyfikatorów sesji przez niezabezpieczone połączenia
Identyfikatory sesji są bezpośrednio połączone z tożsamością użytkownika, tak samo jak dane uwierzytelniające, a zatem ich przechwycenie może prowadzić do przejęcia konta użytkownika. Prowadzi to do wszelkiego rodzaju szkód dla użytkowników, od finansowych i wizerunkowych po zdrowotne.
Aby Twoja witryna była bezpieczna przed atakami uwierzytelniającymi, wymagaj uwierzytelniania wieloskładnikowego : na przykład wymagaj stałego hasła i jednorazowego hasła dostarczanego na urządzenie mobilne użytkownika.
Google stosuje opcję uwierzytelniania dwuskładnikowego : aby otworzyć konto Google w przeglądarce internetowej, musisz najpierw wprowadzić hasło. Jeśli jest poprawny, musisz też otworzyć aplikację Google na telefonie i wybrać numer wyświetlany w przeglądarce internetowej.
Bardziej oczywiste metody ochrony witryny przed złamanym uwierzytelnianiem obejmują:
- wymuszanie złożoności hasła — „Hasło musi mieć co najmniej 8 znaków i zawierać co najmniej jedną cyfrę, jedną wielką literę i jedną małą literę”.
- ograniczenie prób logowania, przed którymi konto zostanie zawieszone (na określony czas lub do momentu kontaktu użytkownika z administratorami serwisu) oraz alarmowanie administratorów
Błędna konfiguracja zabezpieczeń
Błędna konfiguracja zabezpieczeń to szeroki temat, ponieważ może się to zdarzyć na dowolnym etapie i w dowolnej części witryny: bazy danych, sieci, serwera, frameworka, pamięci masowej lub czegokolwiek innego. Słabości konfiguracji można wykorzystać do uzyskania dostępu do funkcjonalności systemu. W zależności od tego, gdzie znajduje się luka, taki dostęp może być częściowy lub całkowity. Przykłady błędnej konfiguracji:

- Domyślne konta/hasła nie zostały wyłączone.
- Istnieją niepotrzebne i nieużywane funkcje.
- Uprawnienia dostępu do chmury nie są bezpiecznie skonfigurowane.
- Twoje komunikaty o błędach zawierają poufne informacje, takie jak nazwy użytkownika, hasła lub adresy e-mail.
Pierwszą rzeczą, którą należy zrobić, aby uniknąć błędnej konfiguracji, jest usunięcie wszystkiego, co nie jest używane — funkcji, próbek, frameworków itp. Następnym krokiem jest zapewnienie tej samej konfiguracji dla wszystkich środowisk i regularne sprawdzanie jej wydajności. Przemyślana architektura to podstawa.
Uszkodzona kontrola dostępu

Kontrola dostępu to kontrola nad tym, co użytkownicy mogą, a czego nie mogą robić. Jeśli nie jest odpowiednio egzekwowane, oznacza to, że użytkownicy mogą wykonywać działania, które mogą wpływać na Twoją witrynę w nieprzewidywalny sposób. Jednym ze sposobów wykorzystania złamanej kontroli dostępu jest przeglądanie i edytowanie profili i danych innych użytkowników. Innym jest dostęp do funkcji premium bez płacenia za nie lub zarabiania na nich. Jeszcze innym jest dostęp do stron administracyjnych z konta nieadministracyjnego (lub, co gorsza, bez konta w ogóle).
Najlepszym sposobem upewnienia się, że kontrola dostępu do Twojej witryny działa, jest testowanie ręczne. Żadne zautomatyzowane narzędzia testujące nie mogą zagwarantować, że kontrola dostępu działa zgodnie z przeznaczeniem.
Uszkodzona kontrola dostępu może również wynikać z nadużywania mechanizmu współdzielenia zasobów między źródłami (CORS), który może zapewnić dostęp do inaczej ograniczonych interfejsów API. Z tego powodu zaleca się używanie CORS w jak najmniejszym stopniu.
Niebezpieczna deserializacja
Serializacja to proces przekształcania obiektu w kod binarny. Deserializacja jest, logicznie rzecz biorąc, przeciwieństwem. Oba są procesami regularnie prowadzonymi w tworzeniu stron internetowych, co sprawia, że ważne jest wdrożenie zabezpieczeń przed wykorzystaniem ich w atakach.
Dobrą wiadomością jest to, że deserializacja nie jest czymś, co zwykły użytkownik lub Twój pracownik może zrobić przypadkowo . To także, po części, zła wiadomość — ataki deserializacji są zawsze celowe, a co za tym idzie, złośliwe. Powodują też najpoważniejsze problemy, takie jak uruchamianie zdalnego kodu, wejście na stronę bez uwierzytelnienia i inicjowanie ataków DoS (odmowa usługi).
Najprostszym sposobem zabezpieczenia witryny przed tego typu atakiem jest zabronienie serializacji obiektów generowanych przez użytkowników. Jeśli nie można tego zrobić, następną najlepszą opcją jest użycie podpisów kryptograficznych do sprawdzania integralności.
Używanie JSON, YAML lub XML może utrudnić hakerom wykorzystywanie słabości deserializacji, ponieważ te formaty nie są binarne.
Niewystarczające rejestrowanie i monitorowanie

Ta luka wydaje się dość oczywista: jeśli nie monitorujesz swojej witryny i nie rejestrujesz wszystkich błędów i nieudanych prób zalogowania się lub wykonania funkcji kontroli dostępu , w zasadzie kusisz hakerów do zaatakowania Twojej witryny. W każdym rodzaju wojny, cyfrowej lub rzeczywistej, pierwszy atak zwykle nie polega na wygraniu, ale na zobaczeniu, z czym się zmagasz. A jeśli jest łatwy sposób, użyj go. Niezalogowanie i monitorowanie takiego sondowania spowoduje, że twój system całkowicie przeoczy atak lub wykryje go, gdy już się odbył i szkoda zostanie wyrządzona.
Logowanie jest szczególnie ważne w przypadku witryn e-commerce, ponieważ zajmują się one pieniędzmi i danymi finansowymi użytkowników.
Aby Twoja witryna była bezpieczniejsza, prawidłowo rejestruj wszystkie nieudane próby i upewnij się, że te dzienniki są przechowywane i archiwizowane poza Twoimi lokalnymi serwerami. Korzystaj z automatycznych systemów ostrzegania o takich awariach i, jeśli to możliwe, zawieszaj konta, które stale generują takie awarie. Niezbędne jest posiadanie systemów ostrzegania w czasie rzeczywistym, aby móc natychmiast zareagować na możliwe naruszenie.
Podmioty zewnętrzne XML (XXE)
Już kilka razy wspominaliśmy o XML (Extensible Markup Language). Jest to elastyczny język, dzięki czemu jest łatwy w użyciu i rozpowszechniony. Procesory XML analizują dane z dokumentów XML. Jeśli Twoja witryna jest oparta na języku XML i akceptuje przesyłanie plików XML bez weryfikacji, może być podatna na ataki.
Aby chronić integralność witryny, zalecany jest następujący zestaw działań:
- Wyłącz przetwarzanie DTD (definicja typu dokumentu).
- Ogranicz lub zablokuj przesyłanie XML lub, jeśli nie można tego zrobić, wymuś dodawanie białej listy — pozytywna weryfikacja danych wejściowych po stronie serwera.
- Regularnie aktualizuj procesory i biblioteki XLM.
- Zapobiegaj serializacji poufnych danych.
- W stosownych przypadkach używaj formatu JSON lub podobnych prostych formatów.
- Implementuj zapory sieciowe aplikacji internetowych (WAF) i bramy bezpieczeństwa API.
Korzystanie z komponentów ze znanymi podatnościami
Nic nie jest doskonałe, a każdy komponent, którego używasz w swoim oprogramowaniu, musi mieć pewną lukę, znaną lub nieznaną. W odpowiedzi na wykryte i rozpoznane luki w zabezpieczeniach oprogramowanie jest aktualizowane w celu pokrycia tych luk lub złagodzenia wszelkich szkód, które mogą być spowodowane ich wykorzystaniem. Niektóre słabości powodują niewielkie szkody, ale inne mogą obciążać Twoją firmę.
Aby zapobiec włamaniu się do witryny z powodu znanych luk w zabezpieczeniach, ważne jest, aby regularnie sprawdzać dostępność aktualizacji i aktualizować wszystkie komponenty używane w witrynie. Może to być żmudne zadanie w przypadku oprogramowania i witryn internetowych z dużą ilością komponentów. Dlatego eksperci ds. bezpieczeństwa zalecają regularne sprawdzanie i usuwanie niepotrzebnych i nieużywanych bibliotek, funkcji, plików i innych komponentów. I oczywiście używaj tylko komponentów z oficjalnych źródeł. Nie daj się uwieść witrynom, które rozpowszechniają zwykle płatne oprogramowanie za darmo — można je zmodyfikować, aby zhakować Twoją witrynę.
Jak stworzyć bezpieczną stronę internetową: podsumowanie

Aby umieścić wszystkie skomplikowane technicznie informacje w kategoriach laika, oto wskazówki dotyczące bezpieczeństwa, których należy przestrzegać, jeśli chcesz stworzyć bezpieczną stronę internetową:
- Znajdź niezawodnego hosta internetowego.
- Regularnie aktualizuj całe oprogramowanie, frameworki i biblioteki używane w Twojej witrynie.
- Usuń wszelkie niepotrzebne funkcje i komponenty ze swojej witryny.
- Skonfiguruj systemy, aby weryfikować dane wejściowe zarówno po stronie przeglądarki, jak i serwera.
- Monitoruj informacje wyświetlane w komunikatach o błędach.
- Skonfiguruj narzędzie do sprawdzania siły hasła dla użytkowników.
- Zawsze używaj silnych haseł do swoich serwerów i stron administracyjnych i regularnie je zmieniaj.
- Zainwestuj w certyfikat SSL / skorzystaj z protokołu HTTPS.
- Skonfiguruj prawidłowe rejestrowanie awarii i błędów.
- Rejestruj transakcje audytu (zwłaszcza jeśli Twoja witryna jest stroną e-commerce).
- Ściśle monitoruj dzienniki.
- Korzystaj z serwerów w chmurze, ale mimo to chroń swoje dane.
- Zawsze szyfruj poufne dane przy użyciu najnowszych technologii.
- Poproś zespół ds. bezpieczeństwa, aby śledził pojawiające się aktualizacje zabezpieczeń, a także nowe zagrożenia, aby móc w odpowiednim czasie reagować na ataki.
Ile kosztuje zabezpieczenie strony internetowej?
To pytanie, na które nie ma jednoznacznej odpowiedzi. Koszt bezpieczeństwa zależy w dużej mierze od stosu technologicznego, z którego korzysta Twoja witryna. Ponadto istnieje koszt aktualizacji, który będzie zależał od tego, ile składników trzeba zaktualizować, jak często je aktualizujesz i ile kosztuje aktualizacja każdego z nich. Koszty te muszą być obliczane indywidualnie przez twoich programistów.
Zdecydowanie zalecamy uwzględnienie bezpieczeństwa od samego początku rozwoju . Pozostawienie kwestii bezpieczeństwa na koniec może (i najprawdopodobniej będzie) skutkować koniecznością wprowadzenia zmian w rdzeniu witryny, co może być nawet droższe niż budowanie zabezpieczeń od samego początku.
Wniosek
Jeśli sam jesteś programistą, jesteś właścicielem firmy programistycznej lub masz własny zespół programistów, możesz ustawić przed nimi wszystkie te zadania. Jeśli jednak nie masz jeszcze po swojej stronie specjalistów technicznych, a chcesz wiedzieć, jak stworzyć bezpieczną stronę internetową z dostawcą outsourcingu, zalecamy znalezienie firmy programistycznej, która nie tylko zbuduje stronę internetową, ale ją wesprze. Przewidzenie każdej luki w zabezpieczeniach jest prawie niemożliwe, ale umiejętność szybkiego reagowania na każde naruszenie może uratować Twoją witrynę przed najgorszym losem.
Deweloperzy z Mind Studios mają doświadczenie w najlepszych praktykach bezpieczeństwa i nadążają za najnowszymi trendami. Jeśli masz pytania dotyczące zabezpieczenia witryny przed hakerami, skontaktuj się z nami w celu uzyskania bezpłatnej konsultacji .
Napisane przez Svitlanę Varaksinę i Artema Chervichnika
