Če ste šele na začetku svojega spletnega razvoja ali poti Node.js, se morda ne zavedate, kako pomembna je zaščita vaše aplikacije.

Express.js ponuja zmogljivo rešitev za gradnjo zalednih spletnih aplikacij, vendar je premalo varnostna. Ko gradite spletno aplikacijo, potrebujete ustrezne varnostne ukrepe za zaščito podatkov vaših uporabnikov.

Na srečo obstajajo metode, s katerimi lahko povečate varnost svojih aplikacij Express.js. Vsi ti nasveti bodo pomagali povečati varnost vaših aplikacij z različnimi pristopi.

Nastavite aplikacijo Express.js

Začnite z nastavitvijo predstavitve spletni strežnik Express.js uporabo npm, upravitelj paketov vozlišč. Lokalno ustvarite projektno mapo in ji spremenite imenik na terminalu.

mkdir express-projekt
cd express-projekt

Nato ustvarite a package.json datoteko v korenskem imeniku.

npm init -y

Nadaljujte in namestite Express.js.

npm install express

Končno ustvarite a server.js datoteko v korenskem imeniku mape vašega projekta in dodajte naslednjo kodo za nastavitev osnovnega spletnega strežnika.

instagram viewer
konst izraziti = zahtevati("ekspresno")
konst app = express()
konst PORT = process.env. PRISTANIŠČE || 5000

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

app.listen (PORT, () => {
konzola.log(`Zagon strežnika http://localhost:${PORT}`)
})

Zaženite strežnik s tem ukazom:

strežnik vozlišča.js

Zdaj ste pripravljeni raziskati nekatere ukrepe, s katerimi lahko zaščitite svojo aplikacijo Express.js.

1. Zaščita aplikacij Express.js s čelado

Čelada je vmesna programska oprema Node.js, ki pomaga zaščititi aplikacije na strani strežnika z nastavitvijo različnih varnostnih glav HTTP. Te glave zagotavljajo bistvene obrambne mehanizme proti pogoste varnostne ranljivosti zaledja, kot je skriptiranje med spletnimi mesti (XSS), ponarejanje zahtev med spletnimi mesti (CSRF) in še veliko več.

Express.js privzeto ne konfigurira varnostnih glav HTTP, kar pušča morebitno varnostno napako, ki razkriva potencialno občutljive glave. Z uporabo teh informacij lahko zlonamerni akterji pridobijo nepooblaščen dostop ali kako drugače motijo ​​vašo aplikacijo.

Čelada deluje kot pomemben ščit, saj zagotavlja, da odzivi HTTP aplikacije sprejmejo potrebne varnostne ukrepe, kar znatno zmanjša potencialno površino napada.

Raziskovanje varnosti aplikacij Express.js brez čelade

Ko strežnik deluje, preglejte glave aplikacije. Kar naprej in naredite zahteve HTTP za API z uporabo Postmana ali katerega koli drugega odjemalca, ki prikazuje glave odgovorov. Večina brskalnikov vključuje nabor orodij za razvijalce, ki vam to omogočajo.

Ko pošljete zahteve domači končni točki, bi morali opaziti podobne rezultate v Glave del odgovora znotraj Poštarja.

Upoštevajte X-Powered-By glava. Običajno zaledne tehnologije uporabljajo to glavo za označevanje ogrodja ali druge programske opreme, ki poganja spletno aplikacijo. Običajno morate odstraniti X-Powered-By glavo v produkcijskem okolju.

S tem boste potencialnim napadalcem preprečili pridobitev dragocenih informacij, ki bi jih lahko uporabili za izkoriščanje znanih ranljivosti, povezanih z vašim tehnološkim skladom.

Preizkusite varnostno konfiguracijo strežnika Express.js

Za oceno varnostnega statusa vaših aplikacij bomo uporabili Varnostne glave spletno orodje. Ta aplikacija je posebej zasnovana za ocenjevanje varnostne konfiguracije glav HTTP za aplikacije na strani odjemalca in tudi na strani strežnika.

Najprej morate omogočiti dostop do lokalnega strežnika Express.js prek interneta. To lahko dosežete na dva možna načina: namestitev vaše aplikacije Express.js na strežnik v oblaku ali uporaba ngrok.

Če ga želite uporabiti, prenesite ngrok zip, ekstrahirajte izvršljivo datoteko in zaženite aplikacijo. Nato zaženite naslednji ukaz za gostovanje lokalnega strežnika Express.js z ngrok.

ngrok http 5000

ngrok bo izpisal nekaj kratkih informacij, ki izgledajo takole:

Kopirajte priloženo URL za posredovanje in ga prilepite v Varnostne glave« vnosno polje in kliknite na Skeniraj gumb.

Ko je ocena varnosti končana, bi morali prejeti podobno poročilo.

Na podlagi poročila je razvidno, da je strežnik Express.js prejel slabo F razred. Ta nizka ocena je posledica odsotnosti bistvenih varnostnih glav HTTP v konfiguraciji strežnika – njihova odsotnost pusti strežnik ranljiv za morebitna varnostna tveganja.

Integrirajte Helmet v aplikacijo Express.js

Zdaj pa nadaljujte in integrirajte Helmet v svojo aplikacijo Express.js. Zaženite spodnji ukaz, da namestite odvisnost.

npm namestite čelado

Posodobite datoteko server.js in uvozite Helmet.

konst čelada = zahtevati("čelada")

Zdaj dodajte Helmet svoji aplikaciji Express.js.

app.use (čelada())

Končno zavrtite razvojni strežnik, iz katerega kopirajte povezavo za posredovanje ngrok's terminal in ga prilepite v Varnostna glava vnosno polje za ponovno skeniranje lokalnega strežnika. Ko je ponovno skeniranje končano, bi morali videti rezultate, podobne tem:

Po integraciji Helmet Express.js vključuje več bistvenih varnostnih glav v odziv HTTP. Ta bistvena izboljšava je povzročila prehod aplikacije Express.js na A razred.

Čeprav Helmet ni brezhibna rešitev, znatno poveča splošno varnost vaše aplikacije Express.js.

2. Zaščita aplikacij Express.js z uporabo Joi, knjižnice za preverjanje vnosa

Joi je knjižnica za preverjanje vnosa, ki pomaga zaščititi aplikacije Express.js z zagotavljanjem priročnega načina za preverjanje in razkuževanje uporabniškega vnosa. Z definiranjem shem preverjanja veljavnosti z uporabo Joi lahko podate pričakovano strukturo, vrste podatkov in omejitve za vhodne podatke.

Joi preveri vnos glede na definirano shemo in zagotovi, da izpolnjuje navedena merila. To pomaga preprečevati običajne varnostne ranljivosti, kot so vstavljanje podatkov, skriptno izvajanje med spletnimi mesti (XSS) in drugi napadi manipulacije podatkov.

Sledite tem korakom, da integrirate Joi v svojo aplikacijo.

  1. Namestite Joi.
    npm namestite joi
  2. Uvozite Joi v datoteko server.js.
    konst Joi = zahtevati('joi');
  3. Ustvarite shemo preverjanja podatkov Joi, ki definira pričakovano strukturo in morebitne omejitve za vhodne podatke.
    konst shema = Joi.object({
    e-pošta: Joi.string().email().required(),
    geslo: Joi.string().min(5).max(16).obvezno()
    });
  4. Potrdite vse dohodne podatke z uporabo definirane sheme.
    konst {napaka, vrednost} = schema.validate (req.body);

    če (napaka) {
    // Obravnava napako pri preverjanju
    // Na primer vrni odgovor o napaki
    vrnitev res.status(400).json({ napaka: napaka.podrobnosti[0].sporočilo });
    }

Z izvajanjem teh korakov lahko izkoristite zmožnosti preverjanja vnosa Joi, da zaščitite svoje aplikacije Express.js. To bo zagotovilo, da bodo vhodni podatki izpolnjevali opredeljene omejitve, kar bo preprečilo morebitne varnostne grožnje manipulacije podatkov.

3. Zaščita aplikacij Express.js z mehanizmom CORS

CORS (Cross-Origin Resource Sharing) je mehanizem, ki ga spletni strežniki uporabljajo za upravljanje, kateri izvori – odjemalci ali druge aplikacije na strani strežnika – lahko dostopajo do svojih zaščitenih virov. Ta mehanizem pomaga zaščititi pred nepooblaščenimi zahtevami navzkrižnega izvora in preprečuje težave, kot so napadi s skriptnim izvajanjem na različnih mestih (XSS).

Za zaščito aplikacij Express.js z uporabo CORS sledite tem korakom:

  1. Namestite paket CORS.
    npm namestite cors
  2. Zahtevajte in uporabite vmesno programsko opremo CORS v datoteki server.js.
    konst cors = zahtevati('cors');
    app.use (cors());

Z integracijo vmesne programske opreme CORS v vašo aplikacijo Express.js omogočite skupno rabo virov navzkrižnega izvora. To zagotavlja, da ublažite morebitna varnostna tveganja, povezana z zahtevami navzkrižnega izvora.

Enostavno varovanje aplikacij na strani strežnika

Za izboljšanje varnosti vaših aplikacij Express.js lahko uporabite enega ali več teh bistvenih ukrepov.

Čeprav je na voljo veliko ukrepov in pristopov za zaščito vaših strežniških aplikacij, je ključna ugotovitev, da bi morali dati prednost varnosti v celotnem življenjskem ciklu razvoja. To je naloga, ki se začne v fazi načrtovanja in se mora nadaljevati vse do uvedbe.