Jeśli dopiero zaczynasz swoją przygodę z tworzeniem stron internetowych lub Node.js, możesz nie zdawać sobie sprawy z tego, jak ważne jest zabezpieczenie aplikacji.

Express.js zapewnia wydajne rozwiązanie do tworzenia backendowych aplikacji internetowych, ale nie zapewnia bezpieczeństwa. Tworząc aplikację internetową, potrzebujesz odpowiednich środków bezpieczeństwa, aby chronić dane użytkowników.

Na szczęście istnieją metody, które można zastosować w celu zwiększenia bezpieczeństwa aplikacji Express.js. Wszystkie te wskazówki pomogą zwiększyć bezpieczeństwo aplikacji przy użyciu różnych podejść.

Skonfiguruj aplikację Express.js

Zacznij od skonfigurowania wersji demonstracyjnej Serwer WWW Express.js za pomocą npm, menedżer pakietów węzłów. Utwórz lokalnie folder projektu i zmień katalog na niego na swoim terminalu.

projekt ekspresowy mkdir
cd express-projekt

Następnie utwórz plik pakiet.json plik w katalogu głównym.

npm init -y

Śmiało i zainstaluj Express.js.

npm zainstaluj ekspresowo

Na koniec utwórz a

instagram viewer
serwer.js plik w katalogu głównym folderu projektu i dodaj następujący kod, aby skonfigurować podstawowy serwer WWW.

konst ekspres = wymagać("wyrazić")
konst aplikacja = ekspres()
konst PORT = proces.env. PORT || 5000

aplikacja.pobierz("/", (wymaganie, res) => {
res.json("Witaj świecie!")
})

app.listen (PORT, () => {
konsola.dziennik(`Uruchamianie serwera http://localhost:${PORT}`)
})

Uruchom serwer za pomocą tego polecenia:

węzeł serwer.js

Możesz teraz zapoznać się z niektórymi środkami, których możesz użyć do zabezpieczenia swojej aplikacji Express.js.

1. Zabezpieczanie aplikacji Express.js za pomocą kasku

Kask to oprogramowanie pośrednie Node.js, które pomaga zabezpieczyć aplikacje po stronie serwera, ustawiając różne nagłówki bezpieczeństwa HTTP. Te nagłówki zapewniają podstawowe mechanizmy obronne przed typowe luki w zabezpieczeniach backendu, takie jak cross-site scripting (XSS), cross-site request forgery (CSRF) i wiele innych.

Express.js domyślnie nie konfiguruje nagłówków bezpieczeństwa HTTP, pozostawiając potencjalną lukę w zabezpieczeniach, która ujawnia potencjalnie wrażliwe nagłówki. Korzystając z tych informacji, złośliwi aktorzy mogą uzyskać nieautoryzowany dostęp lub w inny sposób zakłócić działanie Twojej aplikacji.

Helmet działa jak niezbędna tarcza, zapewniając, że odpowiedzi HTTP aplikacji przyjmują niezbędne środki bezpieczeństwa, znacznie zmniejszając potencjalną powierzchnię ataku.

Badanie bezpieczeństwa aplikacji Express.js bez kasku

Przy uruchomionym serwerze sprawdź nagłówki aplikacji. Śmiało i wysyłaj żądania HTTP do API za pomocą Postmana lub dowolnego innego klienta, który wyświetla nagłówki odpowiedzi. Większość przeglądarek zawiera zestaw narzędzi programistycznych, które pozwolą ci to zrobić.

Podczas wysyłania żądań do domowego punktu końcowego należy zaobserwować podobne wyniki w pliku Nagłówki sekcja odpowiedzi w programie Postman.

Zwróć uwagę na X-Powered-By nagłówek. Zazwyczaj technologie zaplecza używają tego nagłówka do wskazania struktury lub innego oprogramowania, które zasila aplikację internetową. Zwykle należy usunąć X-Powered-By nagłówek w środowisku produkcyjnym.

W ten sposób uniemożliwisz potencjalnym atakującym uzyskanie cennych informacji, które mogliby wykorzystać do wykorzystania znanych luk w zabezpieczeniach związanych z stosem technologii.

Przetestuj konfigurację zabezpieczeń serwera Express.js

Aby ocenić stan bezpieczeństwa Twoich aplikacji, użyjemy Nagłówki zabezpieczeń narzędzie internetowe. Ta aplikacja została specjalnie zaprojektowana do oceny konfiguracji zabezpieczeń nagłówków HTTP dla aplikacji po stronie klienta, jak również po stronie serwera.

Najpierw musisz udostępnić swój lokalny serwer Express.js przez Internet. Istnieją dwa możliwe podejścia, aby to osiągnąć: wdrożenie aplikacji Express.js na serwerze w chmurze lub użycie ngrok.

Aby go użyć, pobierz ngrok zip, rozpakuj plik wykonywalny i uruchom aplikację. Następnie uruchom następujące polecenie, aby hostować lokalny serwer Express.js za pomocą ngrok.

ngrok http 5000

ngrok wyświetli kilka krótkich informacji, które wyglądają tak:

Skopiuj podane URL przekierowania i wklej go do Nagłówki zabezpieczeńpole wprowadzania i kliknij przycisk Skanowanie przycisk.

Po zakończeniu oceny bezpieczeństwa powinieneś otrzymać podobny raport.

Z raportu wynika, że ​​serwer Express.js otrzymał słabą ocenę F stopień. Ta niska ocena wynika z braku niezbędnych nagłówków HTTP w konfiguracji serwera — ich brak naraża serwer na potencjalne zagrożenia bezpieczeństwa.

Zintegruj Helmet z aplikacją Express.js

Teraz śmiało zintegruj Helmet z aplikacją Express.js. Uruchom poniższe polecenie, aby zainstalować zależność.

npm zainstaluj kask

Zaktualizuj plik server.js i zaimportuj Helmet.

konst hełm = wymagać("kask")

Teraz dodaj Helmet do swojej aplikacji Express.js.

app.use (hełm())

Na koniec uruchom serwer programistyczny, skopiuj łącze przekierowania z ngrok terminalu i wklej go do pliku Nagłówki zabezpieczeń pole wejściowe, aby ponownie przeskanować lokalny serwer. Po zakończeniu ponownego skanowania powinieneś zobaczyć wyniki podobne do tych:

Po zintegrowaniu Helmet, Express.js zawiera kilka niezbędnych nagłówków bezpieczeństwa w odpowiedzi HTTP. Ta znacząca poprawa spowodowała przejście aplikacji Express.js do wersji A stopień.

Chociaż Helmet nie jest niezawodnym rozwiązaniem, znacznie zwiększa ogólne bezpieczeństwo Twojej aplikacji Express.js.

2. Zabezpieczanie aplikacji Express.js za pomocą Joi, biblioteki sprawdzania poprawności danych wejściowych

Joi to biblioteka do sprawdzania poprawności danych wejściowych, która pomaga zabezpieczyć aplikacje Express.js, zapewniając wygodny sposób sprawdzania poprawności i oczyszczania danych wprowadzanych przez użytkownika. Definiując schematy walidacji za pomocą Joi, możesz określić oczekiwaną strukturę, typy danych i ograniczenia dla danych przychodzących.

Joi sprawdza poprawność danych wejściowych względem zdefiniowanego schematu, upewniając się, że spełniają one określone kryteria. Pomaga to zapobiegać typowym lukom w zabezpieczeniach, takim jak wstrzykiwanie danych, skrypty krzyżowe (XSS) i inne ataki polegające na manipulacji danymi.

Wykonaj poniższe kroki, aby zintegrować Joi ze swoją aplikacją.

  1. Zainstaluj Joi.
    npm zainstaluj joi
  2. Zaimportuj Joi do swojego pliku server.js.
    konst Joi = wymagać(„Joi”);
  3. Utwórz schemat sprawdzania poprawności danych Joi, który definiuje oczekiwaną strukturę i wszelkie ograniczenia dla danych wejściowych.
    konst schemat = Joi.object({
    e-mail: Joi.string().email().wymagany(),
    hasło: Joi.string().min(5).maks(16).wymagany()
    });
  4. Zweryfikuj wszystkie przychodzące dane przy użyciu zdefiniowanego schematu.
    konst { błąd, wartość } = schema.validate (req.body);

    Jeśli (błąd) {
    // Błąd sprawdzania poprawności obsługi
    // Na przykład zwróć odpowiedź o błędzie
    powrót res.status(400.json({ błąd: szczegóły błędu[0].wiadomość });
    }

Wdrażając te kroki, możesz wykorzystać możliwości Joi do sprawdzania poprawności danych wejściowych, aby zabezpieczyć swoje aplikacje Express.js. Zapewni to, że przychodzące dane spełniają określone ograniczenia, zapobiegając potencjalnym zagrożeniom bezpieczeństwa związanym z manipulacją danymi.

3. Zabezpieczanie aplikacji Express.js za pomocą mechanizmu CORS

Cross-Origin Resource Sharing (CORS) to mechanizm używany przez serwery internetowe do zarządzania źródłami — klientami lub innymi aplikacjami po stronie serwera — które mogą uzyskiwać dostęp do chronionych zasobów. Ten mechanizm pomaga chronić przed nieautoryzowanymi żądaniami z różnych źródeł, zapobiegając problemom, takim jak ataki typu cross-site scripting (XSS).

Aby zabezpieczyć aplikacje Express.js przy użyciu mechanizmu CORS, wykonaj następujące kroki:

  1. Zainstaluj pakiet CORS.
    npm zainstaluj cors
  2. Wymagaj i używaj oprogramowania pośredniczącego CORS w pliku server.js.
    konst kors = wymagać(„kors”);
    app.use (cors());

Integrując oprogramowanie pośredniczące CORS z aplikacją Express.js, włączasz udostępnianie zasobów między źródłami. Zapewnia to ograniczenie potencjalnych zagrożeń bezpieczeństwa związanych z żądaniami między źródłami.

Łatwe zabezpieczanie aplikacji po stronie serwera

Możesz użyć jednego lub więcej z tych podstawowych środków, aby zwiększyć bezpieczeństwo swoich aplikacji Express.js.

Chociaż dostępnych jest wiele środków i podejść do ochrony aplikacji po stronie serwera, kluczową kwestią jest priorytetowe traktowanie bezpieczeństwa przez cały cykl rozwoju. Jest to zadanie, które rozpoczyna się w fazie projektowania i powinno trwać aż do wdrożenia.