Hvis du nettopp har begynt din webutvikling eller Node.js-reise, er du kanskje ikke klar over hvor viktig det er å sikre appen din.

Express.js gir en effektiv løsning for å bygge backend-webapper, men den mangler sikkerhet. Når du bygger en nettapplikasjon, trenger du tilstrekkelige sikkerhetstiltak for å beskytte brukernes data.

Heldigvis finnes det metoder du kan ta for å forbedre sikkerheten til Express.js-applikasjonene dine. Disse tipsene vil alle bidra til å styrke sikkerheten til applikasjonene dine ved å bruke forskjellige tilnærminger.

Sett opp en Express.js-applikasjon

Start med å sette opp en demo Express.js webserver ved hjelp av npm, Node Package Manager. Opprett en prosjektmappe lokalt og endre katalogen til den på terminalen din.

mkdir express-prosjekt
cd ekspress-prosjekt

Deretter oppretter du en package.json filen i rotkatalogen.

npm init -y

Fortsett og installer Express.js.

npm install express

Til slutt oppretter du en server.js fil i rotkatalogen til prosjektmappen din, og legg til følgende kode for å sette opp en grunnleggende webserver.

konst uttrykke = krever("uttrykke")
konst app = express()
konst PORT = prosess.env. PORT || 5000

app.get("/", (req, res) => {
res.json("Hei Verden!")
})

app.listen (PORT, () => {
konsoll.Logg(`Starter server på http://localhost:${PORT}`)
})

Start serveren med denne kommandoen:

node server.js

Du er nå klar til å utforske noen av tiltakene du kan bruke for å sikre Express.js-applikasjonen din.

1. Sikring av Express.js-applikasjoner ved hjelp av hjelm

Hjelm er en Node.js-mellomvare som hjelper til med å sikre serverside-apper ved å sette ulike HTTP-sikkerhetshoder. Disse overskriftene gir viktige forsvarsmekanismer mot vanlige sikkerhetssårbarheter i backend, for eksempel cross-site scripting (XSS), cross-site request forgery (CSRF) og mange flere.

Express.js konfigurerer ikke HTTP-sikkerhetshoder som standard, og etterlater en potensiell sikkerhetsfeil som avslører potensielt sensitive overskrifter. Ved å bruke denne informasjonen kan ondsinnede aktører få uautorisert tilgang eller på annen måte forstyrre appen din.

Hjelm fungerer som et viktig skjold, og sikrer at applikasjonens HTTP-svar vedtar nødvendige sikkerhetstiltak, og reduserer den potensielle angrepsoverflaten betydelig.

Utforsk sikkerheten til Express.js-applikasjoner uten hjelm

Undersøk applikasjonens overskrifter mens serveren kjører. Gå videre og foreta HTTP-forespørsler til API ved hjelp av Postman eller en hvilken som helst annen klient som viser svaroverskrifter. De fleste nettlesere inkluderer et sett med utviklerverktøy som lar deg gjøre det.

Når du sender forespørsler til hjemmeendepunktet, bør du observere lignende resultater i Overskrifter delen av svaret i Postman.

Legg merke til X-Powered-By Overskrift. Vanligvis bruker backend-teknologier denne overskriften for å indikere rammeverket eller annen programvare som driver nettapplikasjonen. Du bør vanligvis fjerne X-Powered-By header i et produksjonsmiljø.

Ved å gjøre det forhindrer du potensielle angripere i å få verdifull informasjon som de kan bruke til å utnytte kjente sårbarheter knyttet til teknologistabelen din.

Test sikkerhetskonfigurasjonen til Express.js-serveren

For å vurdere sikkerhetsstatusen til applikasjonene dine, bruker vi Sikkerhetsoverskrifter online verktøy. Denne appen er spesielt utviklet for å evaluere sikkerhetskonfigurasjonen av HTTP-hoder for klient-side, så vel som server-side applikasjoner.

Først må du gjøre din lokale Express.js-server tilgjengelig over Internett. Det er to mulige tilnærminger for å oppnå dette: distribuere Express.js-applikasjonen din til en skyserver eller bruke ngrok.

For å bruke det, Last ned ngrok zip-fil, pakk ut den kjørbare filen og start programmet. Kjør deretter følgende kommando for å være vert for din lokale Express.js-server med ngrok.

ngrok http 5000

ngrok vil gi ut litt kort informasjon som ser slik ut:

Kopier det oppgitte videresendings-URL og lim den inn i Sikkerhetsoverskrifter' inndataboksen, og klikk på Skann knapp.

Når sikkerhetsevalueringen er fullført, bør du motta en lignende rapport.

Basert på rapporten er det tydelig at Express.js-serveren fikk en dårlig F karakter. Denne lave karakteren er et resultat av fraværet av viktige HTTP-sikkerhetshoder i serverens konfigurasjon – deres fravær gjør serveren sårbar for potensielle sikkerhetsrisikoer.

Integrer hjelm i Express.js-applikasjonen

Nå, fortsett og integrer Helmet i Express.js-applikasjonen din. Kjør kommandoen nedenfor for å installere avhengigheten.

npm installer hjelm

Oppdater server.js-filen og importer hjelm.

konst hjelm = krever("hjelm")

Nå legger du til Hjelm til Express.js-applikasjonen din.

app.use (hjelm())

Til slutt snurr du opp utviklingsserveren, kopierer viderekoblingslenken fra ngrok sin terminal, og lim den inn i Sikkerhetshoder inndatafeltet for å skanne den lokale serveren på nytt. Når reskanningen er fullført, bør du se lignende resultater som disse:

Etter å ha integrert Hjelm, inkluderer Express.js flere viktige sikkerhetshoder i HTTP-svaret. Denne betydelige forbedringen førte til at Express.js-applikasjonen gikk over til en EN karakter.

Selv om Hjelm ikke er en idiotsikker løsning, forbedrer den den generelle sikkerheten til Express.js-applikasjonen din betydelig.

2. Sikring av Express.js-applikasjoner ved hjelp av Joi, et bibliotek for inngangsvalidering

Joi er et bibliotek for inndatavalidering som hjelper til med å sikre Express.js-apper ved å tilby en praktisk måte å validere og rense brukerinndata på. Ved å definere valideringsskjemaer ved hjelp av Joi, kan du spesifisere forventet struktur, datatyper og begrensninger for innkommende data.

Joi validerer input mot det definerte skjemaet, og sikrer at det oppfyller de angitte kriteriene. Dette bidrar til å forhindre vanlige sikkerhetssårbarheter som datainjeksjon, cross-site scripting (XSS) og andre datamanipulasjonsangrep.

Følg disse trinnene for å integrere Joi i applikasjonen din.

  1. Installer Joi.
    npm installer joi
  2. Importer Joi i server.js-filen din.
    konst Joi = krever('joi');
  3. Opprett et Joi-datavalideringsskjema som definerer forventet struktur og eventuelle begrensninger for inndataene.
    konst schema = Joi.object({
    e-post: Joi.string().email().required(),
    passord: Joi.string().min(5).max(16).required()
    });
  4. Valider alle innkommende data ved å bruke det definerte skjemaet.
    konst { error, value } = schema.validate (req.body);

    hvis (feil) {
    // Håndter valideringsfeil
    // Returner for eksempel et feilsvar
    komme tilbake res.status(400).json({ feil: feilmeldingsdetaljer[0].beskjed });
    }

Ved å implementere disse trinnene kan du dra nytte av Joi sine inndatavalideringsfunksjoner for å sikre Express.js-applikasjonene dine. Dette vil sikre at innkommende data oppfyller definerte begrensninger, og forhindrer potensielle sikkerhetstrusler for datamanipulering.

3. Sikring av Express.js-applikasjoner ved hjelp av CORS-mekanismen

Cross-Origin Resource Sharing (CORS) er en mekanisme som nettservere bruker for å administrere hvilke opprinnelser – klienter eller andre serversideapplikasjoner – som kan få tilgang til deres beskyttede ressurser. Denne mekanismen bidrar til å beskytte mot uautoriserte forespørsler med kryssopprinnelse, og forhindrer problemer som XSS-angrep (cross-site scripting).

Følg disse trinnene for å sikre Express.js-applikasjoner ved hjelp av CORS:

  1. Installer CORS-pakken.
    npm install cors
  2. Krev og bruk CORS mellomvare i server.js-filen.
    konst cors = krever('cors');
    app.use (cors());

Ved å integrere CORS-mellomvaren i Express.js-applikasjonen, aktiverer du Cross-Origin Resource Sharing. Dette sikrer at du reduserer potensielle sikkerhetsrisikoer knyttet til forespørsler på tvers av opprinnelse.

Sikre applikasjoner på serversiden på en enkel måte

Du kan bruke ett eller flere av disse essensielle tiltakene for å forbedre sikkerheten til dine Express.js-applikasjoner.

Selv om det er mange tilgjengelige tiltak og tilnærminger for å beskytte applikasjonene på serversiden, er nøkkelen at du bør prioritere sikkerhet gjennom hele utviklingslivssyklusen. Dette er en oppgave som begynner i designfasen og bør fortsette helt frem til distribusjon.