Ak práve začínate s vývojom webu alebo cestou Node.js, možno si neuvedomujete, aké dôležité je zabezpečiť vašu aplikáciu.
Express.js poskytuje výkonné riešenie na vytváranie backendových webových aplikácií, ale zaostáva za bezpečnosťou. Keď vytvárate webovú aplikáciu, potrebujete primerané bezpečnostné opatrenia na ochranu údajov vašich používateľov.
Našťastie existujú metódy, ktoré môžete použiť na zvýšenie bezpečnosti vašich aplikácií Express.js. Všetky tieto tipy pomôžu zvýšiť bezpečnosť vašich aplikácií pomocou rôznych prístupov.
Nastavte aplikáciu Express.js
Začnite nastavením ukážky Webový server Express.js použitím npm, správca balíkov uzlov. Lokálne vytvorte priečinok projektu a zmeňte naň adresár na vašom termináli.
expresný projekt mkdir
cd express-projekt
Ďalej vytvorte a package.json súbor v koreňovom adresári.
npm init -y
Pokračujte a nainštalujte Express.js.
npm install express
Nakoniec vytvorte a server.js súbor v koreňovom adresári priečinka vášho projektu a pridajte nasledujúci kód na nastavenie základného webového servera.
konšt vyjadriť = vyžadovať("expresné")
konšt app = express()
konšt PORT = process.env. PORT || 5000app.get("/", (req, res) => {
res.json("Ahoj Svet!")
})
app.listen (PORT, () => {
konzoly.log(`Spúšťa sa server http://localhost:${PORT}`)
})
Spustite server týmto príkazom:
uzol server.js
Teraz ste pripravení preskúmať niektoré opatrenia, ktoré môžete použiť na zabezpečenie svojej aplikácie Express.js.
1. Zabezpečenie aplikácií Express.js pomocou prilby
Prilba je middleware Node.js, ktorý pomáha zabezpečiť aplikácie na strane servera nastavením rôznych hlavičiek zabezpečenia HTTP. Tieto hlavičky poskytujú základné obranné mechanizmy proti bežné bezpečnostné chyby backendu, ako je skriptovanie medzi lokalitami (XSS), falšovanie požiadaviek medzi lokalitami (CSRF) a mnohé ďalšie.
Express.js štandardne nekonfiguruje hlavičky zabezpečenia HTTP, čo ponecháva potenciálnu bezpečnostnú chybu, ktorá odhaľuje potenciálne citlivé hlavičky. Pomocou týchto informácií môžu byť útočníci schopní získať neoprávnený prístup alebo inak narušiť vašu aplikáciu.
Helma funguje ako životne dôležitý štít, ktorý zabezpečuje, že odpovede HTTP aplikácie prijímajú potrebné bezpečnostné opatrenia, čím sa výrazne znižuje potenciálny povrch útoku.
Preskúmanie bezpečnosti aplikácií Express.js bez prilby
So spusteným serverom skontrolujte hlavičky aplikácie. Pokračujte a vytvárať HTTP požiadavky na API pomocou Postmana alebo akéhokoľvek iného klienta, ktorý zobrazuje hlavičky odpovedí. Väčšina prehliadačov obsahuje sadu vývojárskych nástrojov, ktoré vám to umožnia.
Keď odosielate požiadavky do domáceho koncového bodu, mali by ste pozorovať podobné výsledky v Hlavičky časť odpovede v rámci Postman.
Všimnite si X-Powered-By hlavička. Backendové technológie zvyčajne používajú túto hlavičku na označenie rámca alebo iného softvéru, ktorý poháňa webovú aplikáciu. Zvyčajne by ste mali odstrániť X-Powered-By hlavičky v produkčnom prostredí.
Zabránite tak potenciálnym útočníkom získať cenné informácie, ktoré by mohli použiť na zneužitie známych zraniteľností spojených s vaším technologickým zásobníkom.
Otestujte konfiguráciu zabezpečenia servera Express.js
Na posúdenie stavu zabezpečenia vašich aplikácií použijeme Bezpečnostné hlavičky online nástroj. Táto aplikácia je špeciálne navrhnutá na vyhodnotenie konfigurácie zabezpečenia hlavičiek HTTP pre aplikácie na strane klienta, ako aj aplikácie na strane servera.
Najprv musíte sprístupniť váš lokálny server Express.js cez internet. Existujú dva možné prístupy, ako to dosiahnuť: nasadenie vašej aplikácie Express.js na cloud server alebo využitie ngrok.
Ak ho chcete použiť, stiahnite si ngrok zip, extrahujte spustiteľný súbor a spustite aplikáciu. Potom spustite nasledujúci príkaz na hosťovanie vášho lokálneho servera Express.js pomocou ngrok.
ngrok http 5000
ngrok vypíše niekoľko krátkych informácií, ktoré vyzerajú takto:
Skopírujte poskytnuté adresa URL na presmerovanie a vložte ho do Bezpečnostné hlavičky' a kliknite na skenovať tlačidlo.
Po dokončení hodnotenia bezpečnosti by ste mali dostať podobnú správu.
Na základe správy je evidentné, že server Express.js dostal slabú správu F stupňa. Tento nízky stupeň je výsledkom absencie základných bezpečnostných hlavičiek HTTP v konfigurácii servera – ich absencia spôsobuje, že server je zraniteľný voči potenciálnym bezpečnostným rizikám.
Integrujte prilbu do aplikácie Express.js
Teraz pokračujte a integrujte Helmet do svojej aplikácie Express.js. Spustite príkaz uvedený nižšie a nainštalujte závislosť.
npm nainštalujte prilbu
Aktualizujte súbor server.js a importujte prilbu.
konšt prilba = vyžadovať("prilba")
Teraz pridajte Helmet do svojej aplikácie Express.js.
app.use (helma())
Nakoniec roztočte vývojový server a skopírujte odkaz na presmerovanie ngrok's terminálu a vložte ho do Bezpečnostná hlavička vstupné pole na opätovné skenovanie lokálneho servera. Po dokončení opätovného skenovania by ste mali vidieť výsledky podobné týmto:
Po integrácii Helmet obsahuje Express.js niekoľko základných bezpečnostných hlavičiek v odpovedi HTTP. Toto podstatné zlepšenie spôsobilo prechod aplikácie Express.js na A stupňa.
Hoci Helmet nie je spoľahlivým riešením, výrazne zvyšuje celkovú bezpečnosť vašej aplikácie Express.js.
2. Zabezpečenie aplikácií Express.js pomocou Joi, knižnice overovania vstupov
Joi je knižnica na overenie vstupu, ktorá pomáha zabezpečiť aplikácie Express.js tým, že poskytuje pohodlný spôsob overovania a dezinfekcie používateľského vstupu. Definovaním overovacích schém pomocou Joi môžete určiť očakávanú štruktúru, typy údajov a obmedzenia pre prichádzajúce údaje.
Joi overuje vstup podľa definovanej schémy a zabezpečuje, že spĺňa zadané kritériá. Pomáha to predchádzať bežným bezpečnostným chybám, ako je vkladanie údajov, skriptovanie medzi stránkami (XSS) a iné útoky na manipuláciu s údajmi.
Postupujte podľa týchto krokov a integrujte Joi do svojej aplikácie.
- Nainštalujte Joi.
npm nainštalovať joi
- Importujte Joi do svojho súboru server.js.
konšt Joi = vyžadovať('joi');
- Vytvorte schému overenia údajov Joi, ktorá definuje očakávanú štruktúru a akékoľvek obmedzenia pre vstupné údaje.
konšt schéma = Joi.object({
email: Joi.string().email().required(),
heslo: Joi.string().min(5).max(16).požadovaný()
}); - Overte všetky prichádzajúce údaje pomocou definovanej schémy.
konšt { chyba, hodnota } = schema.validate (req.body);
ak (chyba) {
// Spracovanie chyby overenia
// Napríklad vráti chybovú odpoveď
vrátiť res.status(400.json({ chyba: detaily chyby[0].správa });
}
Implementáciou týchto krokov môžete využiť možnosti overovania vstupu Joi na zabezpečenie svojich aplikácií Express.js. Tým sa zabezpečí, že prichádzajúce údaje budú spĺňať definované obmedzenia, čím sa zabráni možným bezpečnostným hrozbám manipulácie s údajmi.
3. Zabezpečenie aplikácií Express.js pomocou mechanizmu CORS
Cross-Origin Resource Sharing (CORS) je mechanizmus, ktorý webové servery používajú na riadenie toho, ktoré zdroje – klienti alebo iné aplikácie na strane servera – môžu pristupovať k ich chráneným zdrojom. Tento mechanizmus pomáha chrániť pred neoprávnenými požiadavkami krížového pôvodu a predchádza problémom, ako sú útoky skriptovania medzi stránkami (XSS).
Ak chcete zabezpečiť aplikácie Express.js pomocou CORS, postupujte takto:
- Nainštalujte balík CORS.
npm install cors
- Vyžadovať a používať middleware CORS v súbore server.js.
konšt kors = vyžadovať('cors');
app.use (cors());
Integráciou middlewaru CORS do vašej aplikácie Express.js povolíte zdieľanie zdrojov medzi zdrojmi. Tým sa zaistí, že znížite potenciálne bezpečnostné riziká súvisiace s požiadavkami krížového pôvodu.
Jednoduché zabezpečenie aplikácií na strane servera
Na zvýšenie bezpečnosti vašich aplikácií Express.js môžete použiť jedno alebo viacero z týchto základných opatrení.
Aj keď je k dispozícii veľa opatrení a prístupov na ochranu vašich aplikácií na strane servera, kľúčovým krokom je, že by ste mali uprednostňovať bezpečnosť počas celého životného cyklu vývoja. Toto je úloha, ktorá začína vo fáze návrhu a mala by pokračovať až po nasadenie.