Om du precis har börjat din webbutveckling eller Node.js-resa kanske du inte är medveten om hur viktigt det är att säkra din app.

Express.js tillhandahåller en effektiv lösning för att bygga backend-webbappar, men den saknar säkerhet. När du bygger en webbapplikation behöver du adekvata säkerhetsåtgärder för att skydda dina användares data.

Lyckligtvis finns det metoder du kan använda för att förbättra säkerheten för dina Express.js-applikationer. Dessa tips hjälper alla till att stärka säkerheten för dina applikationer med hjälp av olika metoder.

Konfigurera en Express.js-applikation

Börja med att skapa en demo Express.js webbserver använder sig av npm, Node Package Manager. Skapa en projektmapp lokalt och ändra katalogen till den på din terminal.

mkdir express-projekt
cd express-projekt

Skapa sedan en package.json filen i rotkatalogen.

npm init -y

Fortsätt och installera Express.js.

npm installera express

Slutligen, skapa en server.js fil i rotkatalogen i din projektmapp och lägg till följande kod för att konfigurera en grundläggande webbserver.

instagram viewer
konst uttrycka = behöva("uttrycka")
konst app = express()
konst PORT = process.env. PORT || 5000

app.get("/", (req, res) => {
res.json("Hej världen!")
})

app.listen (PORT, () => {
trösta.logga(`Startar servern på http://localhost:${PORT}`)
})

Starta servern med detta kommando:

nod server.js

Du är nu redo att utforska några av de åtgärder du kan använda för att säkra din Express.js-applikation.

1. Säkra Express.js-applikationer med hjälp av hjälm

Hjälm är en Node.js-mellanprogramvara som hjälper till att säkra appar på serversidan genom att ställa in olika HTTP-säkerhetsrubriker. Dessa rubriker tillhandahåller viktiga försvarsmekanismer mot vanliga säkerhetsbrister i backend, såsom cross-site scripting (XSS), cross-site request forgery (CSRF) och många fler.

Express.js konfigurerar inte HTTP-säkerhetsrubriker som standard, vilket lämnar en potentiell säkerhetsbrist som avslöjar potentiellt känsliga rubriker. Med hjälp av denna information kan illvilliga aktörer få obehörig åtkomst eller på annat sätt störa din app.

Hjälm fungerar som en viktig sköld och säkerställer att applikationens HTTP-svar vidtar nödvändiga säkerhetsåtgärder, vilket avsevärt minskar den potentiella attackytan.

Utforska säkerheten för Express.js-applikationer utan hjälm

Med servern igång, undersök programmets rubriker. Varsågod och gör HTTP-förfrågningar till API: t med Postman eller någon annan klient som visar svarsrubriker. De flesta webbläsare innehåller en uppsättning utvecklarverktyg som låter dig göra det.

När du skickar förfrågningar till hemslutpunkten bör du observera liknande resultat i Rubriker avsnitt av svaret inom Postman.

Lägg märke till X-Powered-By rubrik. Vanligtvis använder backend-tekniker denna rubrik för att indikera ramverket eller annan programvara som driver webbapplikationen. Du bör vanligtvis ta bort X-Powered-By header i en produktionsmiljö.

Genom att göra det förhindrar du potentiella angripare från att få värdefull information som de kan använda för att utnyttja kända sårbarheter som är kopplade till din teknikstack.

Testa säkerhetskonfigurationen för Express.js-servern

För att bedöma säkerhetsstatusen för dina applikationer använder vi Säkerhetsrubriker onlineverktyg. Den här appen är speciellt utformad för att utvärdera säkerhetskonfigurationen av HTTP-huvuden för applikationer på klientsidan såväl som på serversidan.

Först måste du göra din lokala Express.js-server tillgänglig över Internet. Det finns två möjliga tillvägagångssätt för att uppnå detta: att distribuera din Express.js-applikation till en molnserver eller använda ngrok.

För att använda den, ladda ner ngroken zip-fil, extrahera den körbara filen och starta programmet. Kör sedan följande kommando för att vara värd för din lokala Express.js-server med ngrok.

ngrok http 5000

ngrok kommer att mata ut lite kort information som ser ut så här:

Kopiera det angivna vidarebefordran URL och klistra in den i Säkerhetsrubriker' inmatningsrutan och klicka på Skanna knapp.

När säkerhetsutvärderingen är klar bör du få en liknande rapport.

Baserat på rapporten är det uppenbart att Express.js-servern fick en dålig F kvalitet. Detta låga betyg är ett resultat av frånvaron av viktiga HTTP-säkerhetsrubriker i serverns konfiguration – deras frånvaro gör servern sårbar för potentiella säkerhetsrisker.

Integrera hjälm i Express.js-applikationen

Nu, gå vidare och integrera Helmet i din Express.js-applikation. Kör kommandot nedan för att installera beroendet.

npm installera hjälm

Uppdatera din server.js-fil och importera hjälm.

konst hjälm = behöva("hjälm")

Lägg nu till Helmet i din Express.js-applikation.

app.use (hjälm())

Slutligen, snurra upp utvecklingsservern, kopiera vidarebefordringslänken från ngroks terminal och klistra in den i Säkerhetshuvudet inmatningsfältet för att skanna om den lokala servern. När omsökningen är klar bör du se liknande resultat som dessa:

Efter att ha integrerat Helmet inkluderar Express.js flera viktiga säkerhetsrubriker i HTTP-svaret. Denna betydande förbättring fick applikationen Express.js att övergå till en A kvalitet.

Även om Helmet inte är en idiotsäker lösning, ökar den avsevärt den övergripande säkerheten för din Express.js-applikation.

2. Säkra Express.js-applikationer med Joi, ett bibliotek för indatavalidering

Joi är ett bibliotek för indatavalidering som hjälper till att säkra Express.js-appar genom att tillhandahålla ett bekvämt sätt att validera och rensa användarinmatning. Genom att definiera valideringsscheman med hjälp av Joi kan du specificera förväntad struktur, datatyper och begränsningar för inkommande data.

Joi validerar indata mot det definierade schemat och säkerställer att det uppfyller de angivna kriterierna. Detta hjälper till att förhindra vanliga säkerhetsbrister såsom datainjektion, cross-site scripting (XSS) och andra datamanipulationsattacker.

Följ dessa steg för att integrera Joi i din applikation.

  1. Installera Joi.
    npm installera joi
  2. Importera Joi i din server.js-fil.
    konst Joi = behöva('joi');
  3. Skapa ett Joi-datavalideringsschema som definierar den förväntade strukturen och eventuella begränsningar för indata.
    konst schema = Joi.object({
    e-post: Joi.string().email().required(),
    lösenord: Joi.string().min(5).max(16).nödvändig()
    });
  4. Validera all inkommande data med det definierade schemat.
    konst { error, value } = schema.validate (req.body);

    om (fel) {
    // Hantera valideringsfel
    // Returnera till exempel ett felsvar
    lämna tillbaka res.status(400).json({ fel: detaljer om felet[0].meddelande });
    }

Genom att implementera dessa steg kan du utnyttja Jois indatavalideringsfunktioner för att säkra dina Express.js-applikationer. Detta kommer att säkerställa att inkommande data uppfyller definierade begränsningar, vilket förhindrar potentiella datamanipulation säkerhetshot.

3. Säkra Express.js-applikationer med hjälp av CORS-mekanismen

Cross-Origin Resource Sharing (CORS) är en mekanism som webbservrar använder för att hantera vilka ursprung – klienter eller andra applikationer på serversidan – som kan komma åt sina skyddade resurser. Den här mekanismen hjälper till att skydda mot obehöriga förfrågningar om gränsöverskridande ursprung och förhindrar problem som XSS-attacker (cross-site scripting).

För att säkra Express.js-applikationer med CORS, följ dessa steg:

  1. Installera CORS-paketet.
    npm installera cors
  2. Kräv och använd CORS-mellanprogram i server.js-filen.
    konst cors = behöva('cors');
    app.use (cors());

Genom att integrera CORS-mellanvaran i din Express.js-applikation, aktiverar du Cross-Origin Resource Sharing. Detta säkerställer att du minimerar potentiella säkerhetsrisker relaterade till förfrågningar med flera ursprung.

Säkra applikationer på serversidan med lätthet

Du kan använda en eller flera av dessa viktiga åtgärder för att förbättra säkerheten för dina Express.js-applikationer.

Även om det finns många tillgängliga åtgärder och tillvägagångssätt för att skydda dina applikationer på serversidan, är det viktigaste att du bör prioritera säkerheten under hela utvecklingens livscykel. Detta är en uppgift som börjar i designfasen och bör fortsätta ända fram till implementeringen.