Pokud s vývojem webu nebo s Node.js teprve začínáte, možná si neuvědomujete, jak důležité je zabezpečení vaší aplikace.

Express.js poskytuje výkonné řešení pro vytváření backendových webových aplikací, ale nedosahuje zabezpečení. Když vytváříte webovou aplikaci, potřebujete adekvátní bezpečnostní opatření k ochraně dat vašich uživatelů.

Naštěstí existují způsoby, jak zvýšit zabezpečení aplikací Express.js. Všechny tyto tipy pomohou zvýšit zabezpečení vašich aplikací pomocí různých přístupů.

Nastavte aplikaci Express.js

Začněte nastavením ukázky Webový server Express.js použitím npm, Správce balíčků uzlů. Lokálně vytvořte složku projektu a změňte na ni adresář na svém terminálu.

expresní projekt mkdir
cd expresní projekt

Dále vytvořte a package.json soubor v kořenovém adresáři.

npm init -y

Pokračujte a nainstalujte Express.js.

npm install express

Nakonec vytvořte a server.js soubor v kořenovém adresáři složky vašeho projektu a přidejte následující kód pro nastavení základního webového serveru.

konst
instagram viewer
vyjádřit = vyžadovat("vyjádřit")
konst app = express()
konst PORT = process.env. PORT || 5000

app.get("/", (req, res) => {
res.json("Ahoj světe!")
})

app.listen (PORT, () => {
řídicí panel.log(`Spouštění serveru zapnuto http://localhost:${PORT}`)
})

Spusťte server tímto příkazem:

uzel server.js

Nyní jste připraveni prozkoumat některá opatření, která můžete použít k zabezpečení své aplikace Express.js.

1. Zabezpečení aplikací Express.js pomocí helmy

Helma je middleware Node.js, který pomáhá zabezpečit aplikace na straně serveru nastavením různých záhlaví zabezpečení HTTP. Tyto hlavičky poskytují základní obranné mechanismy proti běžné chyby zabezpečení backendu, jako je cross-site scripting (XSS), cross-site request forgering (CSRF) a mnoho dalších.

Express.js ve výchozím nastavení nekonfiguruje hlavičky zabezpečení HTTP, což ponechává potenciální bezpečnostní chybu, která odhaluje potenciálně citlivá hlavička. Pomocí těchto informací mohou být útočníci schopni získat neoprávněný přístup nebo jinak narušit vaši aplikaci.

Helma funguje jako životně důležitý štít, který zajišťuje, že odpovědi HTTP aplikace přijmou nezbytná bezpečnostní opatření, čímž se výrazně sníží potenciální plocha útoku.

Zkoumání zabezpečení aplikací Express.js bez přilby

Se spuštěným serverem prozkoumejte záhlaví aplikace. Pokračujte a provádět HTTP požadavky na API pomocí Postman nebo jakýkoli jiný klient, který zobrazuje hlavičky odpovědí. Většina prohlížečů obsahuje sadu vývojářských nástrojů, které vám to umožní.

Když odesíláte požadavky do domovského koncového bodu, měli byste pozorovat podobné výsledky v Záhlaví část odpovědi v rámci Postman.

Všimněte si X-Powered-By záhlaví. Backendové technologie obvykle používají tuto hlavičku k označení rámce nebo jiného softwaru, který pohání webovou aplikaci. Obvykle byste měli odstranit X-Powered-By záhlaví v produkčním prostředí.

Tím zabráníte potenciálním útočníkům získat cenné informace, které by mohli použít k zneužití známých zranitelností spojených s vaším technologickým stackem.

Otestujte konfiguraci zabezpečení serveru Express.js

K posouzení stavu zabezpečení vašich aplikací použijeme Bezpečnostní záhlaví online nástroj. Tato aplikace je speciálně navržena k vyhodnocení konfigurace zabezpečení HTTP hlaviček pro aplikace na straně klienta i pro aplikace na straně serveru.

Nejprve musíte zpřístupnit místní server Express.js přes internet. Existují dva možné přístupy, jak toho dosáhnout: nasazení aplikace Express.js na cloudový server nebo využití ngrok.

Chcete-li to použít, stáhněte si ngrok zip, extrahujte spustitelný soubor a spusťte aplikaci. Poté spusťte následující příkaz pro hostování vašeho místního serveru Express.js pomocí ngrok.

ngrok http 5000

ngrok vypíše nějaké stručné informace, které vypadají takto:

Zkopírujte poskytnuté přesměrovací URL a vložte jej do Bezpečnostní záhlaví' a klikněte na Skenovat knoflík.

Po dokončení hodnocení zabezpečení byste měli obdržet podobnou zprávu.

Na základě zprávy je evidentní, že server Express.js obdržel špatný výsledek F školní známka. Tento nízký stupeň je důsledkem absence nezbytných bezpečnostních hlaviček HTTP v konfiguraci serveru – jejich absence činí server zranitelným vůči potenciálním bezpečnostním rizikům.

Integrujte Helmet do aplikace Express.js

Nyní pokračujte a integrujte Helmet do své aplikace Express.js. Spusťte níže uvedený příkaz a nainstalujte závislost.

npm nainstalujte helmu

Aktualizujte svůj soubor server.js a importujte Helmet.

konst helma = vyžadovat("helma")

Nyní přidejte Helmet do své aplikace Express.js.

app.use (helma())

Nakonec roztočte vývojový server a zkopírujte odkaz pro předávání ngrok's terminálu a vložte jej do Bezpečnostní hlavička vstupní pole pro opětovné prohledání místního serveru. Po dokončení opětovného skenování byste měli vidět výsledky podobné těmto:

Po integraci Helmet obsahuje Express.js několik základních bezpečnostních hlaviček v odpovědi HTTP. Toto podstatné vylepšení způsobilo, že aplikace Express.js přešla do formátu an A školní známka.

Přestože Helmet není spolehlivé řešení, výrazně zvyšuje celkové zabezpečení vaší aplikace Express.js.

2. Zabezpečení aplikací Express.js pomocí Joi, knihovny pro ověřování vstupu

Joi je knihovna pro ověřování vstupu, která pomáhá zabezpečit aplikace Express.js tím, že poskytuje pohodlný způsob ověřování a dezinfekce uživatelského vstupu. Definováním ověřovacích schémat pomocí Joi můžete určit očekávanou strukturu, datové typy a omezení pro příchozí data.

Joi ověřuje vstup podle definovaného schématu a zajišťuje, že splňuje zadaná kritéria. To pomáhá předcházet běžným bezpečnostním chybám, jako je vkládání dat, cross-site scripting (XSS) a další útoky na manipulaci s daty.

Postupujte podle těchto kroků a integrujte Joi do své aplikace.

  1. Nainstalujte Joi.
    npm nainstalovat joi
  2. Importujte Joi do svého souboru server.js.
    konst Joi = vyžadovat('joi');
  3. Vytvořte schéma ověření dat Joi, které definuje očekávanou strukturu a všechna omezení pro vstupní data.
    konst schéma = Joi.object({
    e-mail: Joi.string().email().required(),
    heslo: Joi.string().min(5).max(16).Požadované()
    });
  4. Ověřte všechna příchozí data pomocí definovaného schématu.
    konst { chyba, hodnota } = schema.validate (req.body);

    -li (chyba) {
    // Zpracování chyby ověření
    // Například vrátí chybovou odpověď
    vrátit se res.status(400.json({ chyba: detaily chyby[0].zpráva });
    }

Implementací těchto kroků můžete využít možnosti ověřování vstupu Joi k zabezpečení aplikací Express.js. To zajistí, že příchozí data splňují definovaná omezení a zabrání potenciálním bezpečnostním hrozbám manipulace s daty.

3. Zabezpečení aplikací Express.js pomocí mechanismu CORS

Cross-Origin Resource Sharing (CORS) je mechanismus, který webové servery používají ke správě toho, které zdroje – klienti nebo jiné aplikace na straně serveru – mohou přistupovat ke svým chráněným zdrojům. Tento mechanismus pomáhá chránit před neoprávněnými požadavky z různých zdrojů a předchází problémům, jako jsou útoky skriptování mezi weby (XSS).

Chcete-li zabezpečit aplikace Express.js pomocí CORS, postupujte takto:

  1. Nainstalujte balíček CORS.
    npm install cors
  2. Vyžadovat a používat middleware CORS v souboru server.js.
    konst kors = vyžadovat('cors');
    app.use (cors());

Integrací middlewaru CORS do vaší aplikace Express.js povolíte sdílení zdrojů mezi zdroji. Tím zajistíte, že zmírníte potenciální bezpečnostní rizika související s požadavky napříč původy.

Snadné zabezpečení aplikací na straně serveru

Ke zvýšení zabezpečení aplikací Express.js můžete použít jedno nebo více z těchto základních opatření.

I když je k dispozici mnoho opatření a přístupů k ochraně vašich aplikací na straně serveru, hlavní věcí je, že byste měli upřednostňovat zabezpečení během celého životního cyklu vývoje. Toto je úkol, který začíná ve fázi návrhu a měl by pokračovat až po nasazení.