Ako ste tek na početku svog web razvoja ili Node.js putovanja, možda niste svjesni koliko je važno osigurati svoju aplikaciju.

Express.js pruža učinkovito rješenje za izradu pozadinskih web-aplikacija, ali nema dovoljno sigurnosti. Kada gradite web aplikaciju, potrebne su vam odgovarajuće sigurnosne mjere za zaštitu podataka vaših korisnika.

Srećom, postoje metode kojima možete poboljšati sigurnost svojih Express.js aplikacija. Svi ovi savjeti pomoći će poboljšati sigurnost vaših aplikacija koristeći različite pristupe.

Postavite Express.js aplikaciju

Započnite postavljanjem demonstracije Express.js web poslužitelj korištenjem npm, upravitelj paketa čvora. Stvorite mapu projekta lokalno i promijenite direktorij u nju na svom terminalu.

mkdir express-projekt
cd express-projekt

Zatim stvorite a paket.json datoteku u korijenskom direktoriju.

npm init -y

Samo naprijed i instalirajte Express.js.

npm instalirajte ekspresno

Na kraju, stvorite a server.js datoteku u korijenskom direktoriju mape vašeg projekta i dodajte sljedeći kod za postavljanje osnovnog web poslužitelja.

instagram viewer
konst izraziti = zahtijevati("izraziti")
konst app = express()
konst LUKA = proces.env. LUKA || 5000

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

app.listen (PORT, () => {
konzola.log(`Pokretanje poslužitelja uključeno http://localhost:${PORT}`)
})

Pokrenite poslužitelj ovom naredbom:

poslužitelj čvora.js

Sada ste spremni istražiti neke od mjera koje možete koristiti za zaštitu svoje Express.js aplikacije.

1. Zaštita Express.js aplikacija pomoću kacige

Kaciga je međuprogram Node.js koji pomaže zaštititi aplikacije na strani poslužitelja postavljanjem različitih HTTP sigurnosnih zaglavlja. Ovi zaglavlja pružaju bitne obrambene mehanizme protiv uobičajene sigurnosne ranjivosti pozadine, kao što je cross-site scripting (XSS), cross-site request forgery (CSRF) i još mnogo toga.

Express.js ne konfigurira HTTP sigurnosna zaglavlja prema zadanim postavkama, ostavljajući potencijalnu sigurnosnu grešku koja otkriva potencijalno osjetljiva zaglavlja. Upotrebom ovih informacija zlonamjerni bi akteri mogli dobiti neovlašteni pristup ili na drugi način poremetiti vašu aplikaciju.

Kaciga djeluje kao vitalni štit, osiguravajući da HTTP odgovori aplikacije usvoje potrebne sigurnosne mjere, značajno smanjujući potencijalnu površinu napada.

Istraživanje sigurnosti Express.js aplikacija bez kacige

Dok je poslužitelj pokrenut, pregledajte zaglavlja aplikacije. Samo naprijed i postavljati HTTP zahtjeve prema API-ju pomoću Postmana ili bilo koji drugi klijent koji prikazuje zaglavlja odgovora. Većina preglednika uključuje skup razvojnih alata koji će vam to omogućiti.

Kada šaljete zahtjeve matičnoj krajnjoj točki, trebali biste vidjeti slične rezultate u Zaglavlja dio odgovora unutar Poštara.

Primijetite X-Powered-By Zaglavlje. Obično pozadinske tehnologije koriste ovo zaglavlje za označavanje okvira ili drugog softvera koji pokreće web aplikaciju. Obično biste trebali ukloniti X-Powered-By zaglavlje u proizvodnom okruženju.

Na taj ćete način spriječiti potencijalne napadače u dobivanju vrijednih informacija koje bi mogli upotrijebiti za iskorištavanje poznatih ranjivosti povezanih s vašim tehnološkim nizom.

Testirajte sigurnosnu konfiguraciju poslužitelja Express.js

Za procjenu sigurnosnog statusa vaših aplikacija koristit ćemo se Sigurnosna zaglavlja online alat. Ova je aplikacija posebno dizajnirana za procjenu sigurnosne konfiguracije HTTP zaglavlja za aplikacije na strani klijenta, kao i za aplikacije na strani poslužitelja.

Najprije morate učiniti svoj lokalni Express.js poslužitelj dostupnim putem Interneta. Dva su moguća pristupa da se to postigne: postavljanje vaše Express.js aplikacije na poslužitelj u oblaku ili korištenje ngroka.

Da biste ga koristili, preuzmi ngrok zip datoteku, izdvojite izvršnu datoteku i pokrenite aplikaciju. Zatim pokrenite sljedeću naredbu da ugostite svoj lokalni Express.js poslužitelj s ngrok.

ngrok http 5000

ngrok će ispisati neke kratke informacije koje izgledaju ovako:

Kopirajte dostavljeno URL za prosljeđivanje i zalijepite ga u Sigurnosna zaglavlja' okvir za unos i kliknite na Skenirati dugme.

Nakon dovršetka sigurnosne procjene trebali biste primiti slično izvješće.

Na temelju izvješća vidljivo je da je poslužitelj Express.js dobio lošu ocjenu F razred. Ova niska ocjena rezultat je nepostojanja bitnih HTTP sigurnosnih zaglavlja u konfiguraciji poslužitelja—njihova odsutnost čini poslužitelj ranjivim na potencijalne sigurnosne rizike.

Integrirajte Helmet u Express.js aplikaciju

Sada samo naprijed i integrirajte Helmet u svoju Express.js aplikaciju. Pokrenite naredbu u nastavku da biste instalirali ovisnost.

npm instalirati kacigu

Ažurirajte datoteku server.js i uvezite Helmet.

konst kaciga = zahtijevati("kaciga")

Sada dodajte Helmet svojoj Express.js aplikaciji.

app.use (kaciga())

Na kraju, zavrtite razvojni poslužitelj, kopirajte vezu za prosljeđivanje s njega ngrokov terminal i zalijepite ga u Sigurnosna zaglavlja polje za unos za ponovno skeniranje lokalnog poslužitelja. Nakon što ponovno skeniranje završi, trebali biste vidjeti rezultate slične ovim:

Nakon integracije Helmeta, Express.js uključuje nekoliko bitnih sigurnosnih zaglavlja u HTTP odgovoru. Ovo značajno poboljšanje uzrokovalo je prijelaz aplikacije Express.js na A razred.

Iako Helmet nije savršeno rješenje, značajno poboljšava ukupnu sigurnost vaše Express.js aplikacije.

2. Zaštita Express.js aplikacija pomoću Joi, knjižnice za provjeru valjanosti unosa

Joi je knjižnica za provjeru valjanosti unosa koja pomaže zaštititi Express.js aplikacije pružajući prikladan način za provjeru valjanosti i dezinfekciju korisničkog unosa. Definiranjem shema provjere valjanosti korištenjem Joi-ja možete odrediti očekivanu strukturu, tipove podataka i ograničenja za dolazne podatke.

Joi provjerava valjanost unosa prema definiranoj shemi, osiguravajući da ispunjava navedene kriterije. To pomaže u sprječavanju uobičajenih sigurnosnih propusta kao što su ubacivanje podataka, skriptiranje na različitim mjestima (XSS) i drugi napadi manipulacije podacima.

Slijedite ove korake kako biste Joi integrirali u svoju aplikaciju.

  1. Instalirajte Joi.
    npm instalirajte joi
  2. Uvezite Joi u svoju server.js datoteku.
    konst Joi = zahtijevati('joi');
  3. Napravite Joi shemu provjere valjanosti podataka koja definira očekivanu strukturu i sva ograničenja za ulazne podatke.
    konst shema = Joi.object({
    email: Joi.string().email().required(),
    lozinka: Joi.string().min(5).max(16).potreban()
    });
  4. Potvrdite sve dolazne podatke pomoću definirane sheme.
    konst { pogreška, vrijednost } = schema.validate (req.body);

    ako (pogreška) {
    // Rješavanje pogreške provjere valjanosti
    // Na primjer, vrati odgovor o pogrešci
    povratak res.status(400).json({ greška: detalji o grešci[0].poruka });
    }

Implementacijom ovih koraka možete iskoristiti Joijeve mogućnosti provjere valjanosti unosa kako biste osigurali svoje Express.js aplikacije. To će osigurati da dolazni podaci zadovoljavaju definirana ograničenja, sprječavajući potencijalne sigurnosne prijetnje manipulacije podacima.

3. Zaštita Express.js aplikacija pomoću CORS mehanizma

Cross-Origin Resource Sharing (CORS) mehanizam je koji web poslužitelji koriste za upravljanje izvorima—klijentima ili drugim aplikacijama na strani poslužitelja—mogu pristupiti svojim zaštićenim resursima. Ovaj mehanizam pomaže u zaštiti od neovlaštenih zahtjeva s drugog izvora, sprječavajući probleme kao što su napadi skriptiranjem na različitim mjestima (XSS).

Da biste osigurali Express.js aplikacije pomoću CORS-a, slijedite ove korake:

  1. Instalirajte CORS paket.
    npm instalirati cors
  2. Zahtijevati i koristiti međuprogram CORS u datoteci server.js.
    konst cors = zahtijevati('cors');
    app.use (cors());

Integracijom srednjeg softvera CORS u svoju Express.js aplikaciju, omogućujete dijeljenje resursa s različitim izvorima. To osigurava da ublažite potencijalne sigurnosne rizike povezane sa zahtjevima iz drugog izvora.

Osiguravanje aplikacija na strani poslužitelja s lakoćom

Možete upotrijebiti jednu ili više ovih bitnih mjera za poboljšanje sigurnosti svojih Express.js aplikacija.

Iako postoje mnoge mjere i pristupi dostupni za zaštitu vaših aplikacija na strani poslužitelja, ključni zaključak je da biste trebali dati prioritet sigurnosti tijekom cijelog životnog ciklusa razvoja. Ovo je zadatak koji počinje u fazi projektiranja i trebao bi se nastaviti sve do implementacije.