Hvis du lige er begyndt på din webudvikling eller Node.js-rejse, er du måske ikke klar over, hvor vigtigt det er at sikre din app.

Express.js giver en effektiv løsning til at bygge backend-webapps, men den mangler sikkerhed. Når du bygger en webapplikation, har du brug for passende sikkerhedsforanstaltninger for at beskytte dine brugeres data.

Heldigvis er der metoder, du kan tage for at forbedre sikkerheden for dine Express.js-applikationer. Disse tips hjælper alle med at styrke sikkerheden for dine applikationer ved hjælp af forskellige tilgange.

Konfigurer en Express.js-applikation

Start med at oprette en demo Express.js webserver ved brug af npm, Node Package Manager. Opret en projektmappe lokalt og skift mappen til den på din terminal.

mkdir express-projekt
cd express-projekt

Opret derefter en package.json fil i rodmappen.

npm init -y

Gå videre og installer Express.js.

npm install Express

Til sidst skal du oprette en server.js fil i rodmappen i din projektmappe, og tilføj følgende kode for at konfigurere en grundlæggende webserver.

instagram viewer
konst udtrykke = kræve("udtrykke")
konst app = express()
konst PORT = proces.env. PORT || 5000

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

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

Start serveren med denne kommando:

node server.js

Du er nu klar til at udforske nogle af de foranstaltninger, du kan bruge til at sikre din Express.js-applikation.

1. Sikring af Express.js-applikationer ved hjælp af hjelm

Hjelm er en Node.js middleware, der hjælper med at sikre serverside-apps ved at indstille forskellige HTTP-sikkerhedsoverskrifter. Disse overskrifter giver væsentlige forsvarsmekanismer mod almindelige sikkerhedssårbarheder i backend, såsom cross-site scripting (XSS), cross-site request forgery (CSRF) og mange flere.

Express.js konfigurerer ikke HTTP-sikkerhedsheadere som standard, hvilket efterlader en potentiel sikkerhedsfejl, der afslører potentielt følsomme overskrifter. Ved at bruge disse oplysninger kan ondsindede aktører muligvis få uautoriseret adgang eller på anden måde forstyrre din app.

Hjelm fungerer som et vigtigt skjold, der sikrer, at applikationens HTTP-svar vedtager nødvendige sikkerhedsforanstaltninger, hvilket reducerer den potentielle angrebsoverflade markant.

Udforsk sikkerheden ved Express.js-applikationer uden hjelm

Undersøg applikationens overskrifter, mens serveren kører. Gå videre og lave HTTP-anmodninger til API'et ved hjælp af Postman eller enhver anden klient, der viser svaroverskrifter. De fleste browsere indeholder et sæt udviklerværktøjer, som giver dig mulighed for det.

Når du sender anmodninger til hjemmeslutpunktet, bør du observere lignende resultater i Overskrifter afsnit af svaret i Postman.

Læg mærke til X-Powered-By header. Typisk bruger backend-teknologier denne header til at angive rammen eller anden software, der driver webapplikationen. Du bør normalt fjerne X-Powered-By header i et produktionsmiljø.

Ved at gøre det forhindrer du potentielle angribere i at få værdifuld information, som de kan bruge til at udnytte kendte sårbarheder forbundet med din teknologistak.

Test sikkerhedskonfigurationen af ​​Express.js-serveren

For at vurdere sikkerhedsstatussen for dine applikationer bruger vi Sikkerhedsoverskrifter online værktøj. Denne app er specielt designet til at evaluere sikkerhedskonfigurationen af ​​HTTP-headers til klient-side, såvel som server-side applikationer.

Først skal du gøre din lokale Express.js-server tilgængelig via internettet. Der er to mulige tilgange til at opnå dette: at implementere din Express.js-applikation til en skyserver eller bruge ngrok.

For at bruge det, download ngrok zip-fil, udpak den eksekverbare fil, og start programmet. Kør derefter følgende kommando for at hoste din lokale Express.js-server med ngrok.

ngrok http 5000

ngrok vil udsende nogle korte oplysninger, der ser sådan ud:

Kopier det angivne videresendelses-URL og indsæt det i Sikkerhedsoverskrifter' indtastningsfeltet, og klik på Scan knap.

Når sikkerhedsevalueringen er afsluttet, bør du modtage en lignende rapport.

Baseret på rapporten er det tydeligt, at Express.js-serveren modtog en dårlig F karakter. Denne lave karakter er et resultat af fraværet af essentielle HTTP-sikkerhedsheadere i serverens konfiguration – deres fravær gør serveren sårbar over for potentielle sikkerhedsrisici.

Integrer hjelm i Express.js-applikationen

Gå nu videre og integrer Helmet i din Express.js-applikation. Kør kommandoen nedenfor for at installere afhængigheden.

npm installer hjelm

Opdater din server.js-fil og importer hjelm.

konst hjelm = kræve("hjelm")

Tilføj nu Hjelm til din Express.js-applikation.

app.use (hjelm())

Drej til sidst udviklingsserveren op, kopier videresendelseslinket fra ngrok's terminal, og indsæt den i Sikkerhedsheader inputfeltet for at genscanne den lokale server. Når genscanningen er fuldført, bør du se lignende resultater som disse:

Efter at have integreret Helmet, inkluderer Express.js adskillige vigtige sikkerhedsheaders i HTTP-svaret. Denne væsentlige forbedring fik applikationen Express.js til at gå over til en EN karakter.

Selvom hjelm ikke er en idiotsikker løsning, forbedrer den den overordnede sikkerhed for din Express.js-applikation markant.

2. Sikring af Express.js-applikationer ved hjælp af Joi, et inputvalideringsbibliotek

Joi er et inputvalideringsbibliotek, der hjælper med at sikre Express.js-apps ved at give en bekvem måde at validere og rense brugerinput på. Ved at definere valideringsskemaer ved hjælp af Joi kan du angive den forventede struktur, datatyper og begrænsninger for indgående data.

Joi validerer inputtet i forhold til det definerede skema og sikrer, at det opfylder de angivne kriterier. Dette hjælper med at forhindre almindelige sikkerhedssårbarheder såsom datainjektion, cross-site scripting (XSS) og andre datamanipulationsangreb.

Følg disse trin for at integrere Joi i din applikation.

  1. Installer Joi.
    npm installer joi
  2. Importer Joi i din server.js-fil.
    konst Joi = kræve('joi');
  3. Opret et Joi-datavalideringsskema, der definerer den forventede struktur og eventuelle begrænsninger for inputdataene.
    konst skema = Joi.object({
    email: Joi.string().email().required(),
    adgangskode: Joi.string().min(5).max(16).required()
    });
  4. Valider alle indgående data ved hjælp af det definerede skema.
    konst { fejl, værdi } = schema.validate (req.body);

    hvis (fejl) {
    // Håndter valideringsfejl
    // Returner for eksempel et fejlsvar
    Vend tilbage res.status(400).json({ fejl: error.details[0].besked });
    }

Ved at implementere disse trin kan du udnytte Jois inputvalideringsfunktioner til at sikre dine Express.js-applikationer. Dette vil sikre, at de indkommende data opfylder definerede begrænsninger, hvilket forhindrer potentielle sikkerhedstrusler mod datamanipulation.

3. Sikring af Express.js-applikationer ved hjælp af CORS-mekanismen

Cross-Origin Resource Sharing (CORS) er en mekanisme, som webservere bruger til at styre, hvilke oprindelser – klienter eller andre server-side applikationer – der kan få adgang til deres beskyttede ressourcer. Denne mekanisme hjælper med at beskytte mod uautoriserede anmodninger om krydsoprindelse, hvilket forhindrer problemer såsom XSS-angreb (cross-site scripting).

Følg disse trin for at sikre Express.js-applikationer ved hjælp af CORS:

  1. Installer CORS-pakken.
    npm installation cors
  2. Kræv og brug CORS-middleware i server.js-filen.
    konst cors = kræve('cors');
    app.use (cors());

Ved at integrere CORS middleware i din Express.js-applikation aktiverer du Cross-Origin Resource Sharing. Dette sikrer, at du mindsker potentielle sikkerhedsrisici i forbindelse med anmodninger om krydsoprindelse.

Sikring af applikationer på serversiden med lethed

Du kan bruge en eller flere af disse væsentlige foranstaltninger til at forbedre sikkerheden for dine Express.js-applikationer.

Selvom der er mange tilgængelige foranstaltninger og tilgange til at beskytte dine server-side-applikationer, er det vigtigste, at du bør prioritere sikkerhed gennem hele udviklingens livscyklus. Dette er en opgave, der begynder i designfasen og bør fortsætte helt frem til implementeringen.