Ja jūs tikko sākat savu tīmekļa izstrādi vai Node.js ceļu, iespējams, nezināt, cik svarīgi ir aizsargāt savu lietotni.

Express.js nodrošina jaudīgu risinājumu aizmugursistēmas tīmekļa lietotņu izveidei, taču tas neatbilst drošībai. Veidojot tīmekļa lietojumprogrammu, jums ir nepieciešami atbilstoši drošības pasākumi, lai aizsargātu lietotāju datus.

Par laimi, ir metodes, kuras varat izmantot, lai uzlabotu savu Express.js lietojumprogrammu drošību. Visi šie padomi palīdzēs uzlabot jūsu lietojumprogrammu drošību, izmantojot dažādas pieejas.

Iestatiet Express.js lietojumprogrammu

Sāciet ar demonstrācijas iestatīšanu Express.js tīmekļa serveris izmantojot npm, mezgla pakotņu pārvaldnieks. Izveidojiet projekta mapi lokāli un mainiet direktoriju uz to savā terminālī.

mkdir ekspresprojekts
cd ekspresprojekts

Pēc tam izveidojiet a pack.json failu saknes direktorijā.

npm init -y

Turpiniet un instalējiet Express.js.

npm install express

Visbeidzot izveidojiet a serveris.js failu projekta mapes saknes direktorijā un pievienojiet šādu kodu, lai iestatītu pamata tīmekļa serveri.

instagram viewer
konst izteikt = pieprasīt("izteikt")
konst lietotne = express ()
konst PORT = process.env. OST || 5000

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

app.listen (PORT, () => {
konsole.log(`Sākt serveri http://localhost:${PORT}`)
})

Sāciet serveri ar šo komandu:

mezgla serveris.js

Tagad esat gatavs izpētīt dažus pasākumus, ko varat izmantot, lai aizsargātu savu Express.js lietojumprogrammu.

1. Express.js lietojumprogrammu nodrošināšana, izmantojot ķiveri

Ķivere ir Node.js starpprogrammatūra, kas palīdz aizsargāt servera puses lietotnes, iestatot dažādas HTTP drošības galvenes. Šīs galvenes nodrošina būtiskus aizsardzības mehānismus pret izplatītas aizmugursistēmas drošības ievainojamības, piemēram, starpvietņu skriptēšana (XSS), starpvietņu pieprasījuma viltošana (CSRF) un daudzas citas.

Express.js pēc noklusējuma nekonfigurē HTTP drošības galvenes, atstājot potenciālu drošības trūkumu, kas atklāj potenciāli jutīgas galvenes. Izmantojot šo informāciju, ļaunprātīgi dalībnieki var iegūt nesankcionētu piekļuvi vai citādi traucēt jūsu lietotni.

Ķivere darbojas kā būtisks vairogs, nodrošinot, ka lietojumprogrammas HTTP atbildēs tiek pieņemti nepieciešamie drošības pasākumi, ievērojami samazinot iespējamo uzbrukuma virsmu.

Express.js lietojumprogrammu drošības izpēte bez ķiveres

Kad serveris darbojas, pārbaudiet lietojumprogrammas galvenes. Uz priekšu un veikt HTTP pieprasījumus API, izmantojot Postman vai jebkuru citu klientu, kas parāda atbilžu galvenes. Lielākajā daļā pārlūkprogrammu ir iekļauts izstrādātāja rīku komplekts, kas to ļaus izdarīt.

Sūtot pieprasījumus uz mājas galapunktu, jums vajadzētu novērot līdzīgus rezultātus Virsraksti atbildes sadaļā Pastnieks.

Ievērojiet, X-Powered-By galvene. Parasti aizmugurtehnoloģijas izmanto šo galveni, lai norādītu sistēmu vai citu programmatūru, kas nodrošina tīmekļa lietojumprogrammas darbību. Parasti jums vajadzētu noņemt X-Powered-By galvene ražošanas vidē.

Šādi rīkojoties, jūs neļausiet potenciālajiem uzbrucējiem iegūt vērtīgu informāciju, ko viņi varētu izmantot, lai izmantotu zināmās ievainojamības, kas saistītas ar jūsu tehnoloģiju kopu.

Pārbaudiet Express.js servera drošības konfigurāciju

Lai novērtētu jūsu lietojumprogrammu drošības statusu, mēs izmantosim Drošības galvenes tiešsaistes rīks. Šī lietotne ir īpaši izstrādāta, lai novērtētu HTTP galveņu drošības konfigurāciju klienta puses, kā arī servera puses lietojumprogrammām.

Pirmkārt, jums ir jāpadara vietējais Express.js serveris pieejams internetā. Lai to panāktu, ir divas iespējamās pieejas: Express.js lietojumprogrammas izvietošana mākoņa serverī vai ngrok izmantošana.

Lai to izmantotu, lejupielādējiet ngrok zip failu, izvelciet izpildāmo failu un palaidiet lietojumprogrammu. Pēc tam palaidiet šo komandu, lai mitinātu savu vietējo Express.js serveri ar ngrok.

ngrok http 5000

ngrok izvadīs īsu informāciju, kas izskatās šādi:

Kopējiet sniegto pāradresācijas URL un ielīmējiet to Drošības galvenes' ievades lodziņā un noklikšķiniet uz Skenēt pogu.

Kad drošības novērtējums ir pabeigts, jums jāsaņem līdzīgs ziņojums.

Pamatojoties uz ziņojumu, ir skaidrs, ka Express.js serveris saņēma sliktu F pakāpe. Šī zemā pakāpe ir rezultāts būtisku HTTP drošības galveņu trūkumam servera konfigurācijā — to trūkums padara serveri neaizsargātu pret iespējamiem drošības riskiem.

Integrējiet ķiveri Express.js lietojumprogrammā

Tagad turpiniet un integrējiet Helmet savā Express.js lietojumprogrammā. Palaidiet tālāk norādīto komandu, lai instalētu atkarību.

npm uzstādīt ķiveri

Atjauniniet failu server.js un importējiet Helmet.

konst ķivere = pieprasīt("ķivere")

Tagad pievienojiet ķiveri savai Express.js lietojumprogrammai.

app.use (ķivere())

Visbeidzot, pagrieziet izstrādes serveri, nokopējiet pārsūtīšanas saiti no ngrok's terminālis un ielīmējiet to Drošības galvenes ievades lauks, lai atkārtoti skenētu vietējo serveri. Kad atkārtota skenēšana ir pabeigta, jums vajadzētu redzēt līdzīgus rezultātus kā:

Pēc Helmet integrēšanas, Express.js HTTP atbildē ir iekļautas vairākas būtiskas drošības galvenes. Šis būtiskais uzlabojums izraisīja Express.js lietojumprogrammas pāreju uz A pakāpe.

Lai gan Helmet nav drošs risinājums, tas ievērojami uzlabo jūsu Express.js lietojumprogrammas vispārējo drošību.

2. Express.js lietojumprogrammu nodrošināšana, izmantojot ievades validācijas bibliotēku Joi

Joi ir ievades validācijas bibliotēka, kas palīdz aizsargāt Express.js lietotnes, nodrošinot ērtu veidu, kā pārbaudīt un tīrīt lietotāja ievadi. Definējot validācijas shēmas, izmantojot Joi, varat norādīt paredzamo struktūru, datu tipus un ierobežojumus ienākošajiem datiem.

Joi pārbauda ievadi saskaņā ar definēto shēmu, nodrošinot, ka tā atbilst norādītajiem kritērijiem. Tas palīdz novērst izplatītas drošības ievainojamības, piemēram, datu ievadīšanu, starpvietņu skriptēšanu (XSS) un citus datu manipulācijas uzbrukumus.

Veiciet šīs darbības, lai integrētu Joi savā lietojumprogrammā.

  1. Instalējiet Joi.
    npm install joi
  2. Importējiet Joi savā server.js failā.
    konst Joi = pieprasīt('joi');
  3. Izveidojiet Joi datu validācijas shēmu, kas definē paredzamo struktūru un visus ieejas datu ierobežojumus.
    konst schema = Joi.object({
    e-pasts: Joi.string().email().required(),
    parole: Joi.string().min(5).max(16).required()
    });
  4. Apstipriniet visus ienākošos datus, izmantojot definēto shēmu.
    konst { error, value } = schema.validate (req.body);

    ja (kļūda) {
    // Apstrādājiet validācijas kļūdu
    // Piemēram, atgriezt kļūdas atbildi
    atgriezties res.status(400).json({ kļūda: error.details[0].message });
    }

Ieviešot šīs darbības, varat izmantot Joi ievades validācijas iespējas, lai aizsargātu savas Express.js lietojumprogrammas. Tas nodrošinās, ka ienākošie dati atbilst noteiktiem ierobežojumiem, novēršot iespējamos datu manipulācijas drošības apdraudējumus.

3. Express.js lietojumprogrammu nodrošināšana, izmantojot CORS mehānismu

Cross-Origin Resource Sharing (CORS) ir mehānisms, ko tīmekļa serveri izmanto, lai pārvaldītu, kuras izcelsmes vietas — klienti vai citas servera puses lietojumprogrammas — var piekļūt saviem aizsargātajiem resursiem. Šis mehānisms palīdz aizsargāt pret neautorizētiem starpizcelsmes pieprasījumiem, novēršot tādas problēmas kā starpvietņu skriptu (XSS) uzbrukumi.

Lai nodrošinātu Express.js lietojumprogrammas, izmantojot CORS, veiciet šīs darbības:

  1. Instalējiet CORS pakotni.
    npm instalēt cors
  2. Pieprasīt un izmantot CORS starpprogrammatūru server.js failā.
    konst cors = pieprasīt('kors');
    app.use (cors());

Integrējot CORS starpprogrammatūru savā Express.js lietojumprogrammā, jūs iespējojat Cross-Origin resursu koplietošanu. Tas nodrošina, ka tiek mazināti iespējamie drošības riski, kas saistīti ar vairāku izcelsmes pieprasījumiem.

Ērta servera puses lietojumprogrammu nodrošināšana

Varat izmantot vienu vai vairākus no šiem svarīgajiem pasākumiem, lai uzlabotu savu Express.js lietojumprogrammu drošību.

Lai gan ir pieejami daudzi pasākumi un pieejas, lai aizsargātu jūsu servera puses lietojumprogrammas, galvenais ir tas, ka drošībai ir jāpiešķir prioritāte visā izstrādes dzīves ciklā. Šis ir uzdevums, kas sākas projektēšanas fāzē un jāturpina līdz pat izvietošanai.