Dacă abia începeți dezvoltarea web sau călătoria Node.js, este posibil să nu știți cât de important este să vă securizați aplicația.

Express.js oferă o soluție performantă pentru construirea de aplicații web de backend, dar nu se ocupă de securitate. Când construiți o aplicație web, aveți nevoie de măsuri de securitate adecvate pentru a vă proteja datele utilizatorilor.

Din fericire, există metode pe care le puteți lua pentru a îmbunătăți securitatea aplicațiilor dvs. Express.js. Toate aceste sfaturi vor ajuta la consolidarea securității aplicațiilor dvs. folosind diferite abordări.

Configurați o aplicație Express.js

Începeți prin a configura o demonstrație Server web Express.js folosind npm, Managerul de pachete Node. Creați un folder de proiect local și schimbați directorul în el pe terminalul dvs.

mkdir expres-proiect
cd expres-proiect

Apoi, creați un pachet.json fișier în directorul rădăcină.

npm init -y

Continuați și instalați Express.js.

npm install express

În cele din urmă, creați un server.js

fișier în directorul rădăcină al folderului proiectului și adăugați următorul cod pentru a configura un server web de bază.

const expres = cere("expres")
const aplicație = expres()
const PORT = proces.env. PORT || 5000

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

app.listen (PORT, () => {
consolă.Buturuga(`Se pornește serverul http://localhost:${PORT}`)
})

Porniți serverul cu această comandă:

node server.js

Acum sunteți gata să explorați unele dintre măsurile pe care le puteți utiliza pentru a vă securiza aplicația Express.js.

1. Securizarea aplicațiilor Express.js folosind Casca

Cască este un middleware Node.js care ajută la securizarea aplicațiilor de pe server prin setarea diferitelor anteturi de securitate HTTP. Aceste anteturi oferă mecanisme de apărare esențiale împotriva vulnerabilități comune de securitate backend, cum ar fi cross-site scripting (XSS), cross-site request falsificare (CSRF) și multe altele.

Express.js nu configurează anteturile de securitate HTTP în mod implicit, lăsând un potențial defect de securitate care expune anteturi potențial sensibile. Folosind aceste informații, actorii rău intenționați ar putea să obțină acces neautorizat sau să vă perturbe în alt mod aplicația.

Casca acționează ca un scut vital, asigurând că răspunsurile HTTP ale aplicației adoptă măsurile de securitate necesare, reducând semnificativ suprafața potențială de atac.

Explorarea securității aplicațiilor Express.js fără cască

Cu serverul în funcțiune, examinați anteturile aplicației. Mergi înainte și faceți solicitări HTTP către API folosind Postman sau orice alt client care afișează antete de răspuns. Majoritatea browserelor includ un set de instrumente pentru dezvoltatori care vă vor permite să faceți acest lucru.

Când trimiteți solicitări către punctul final de acasă, ar trebui să observați rezultate similare în Anteturi secțiunea răspunsului din Postman.

Observați X-Powered-By antet. De obicei, tehnologiile backend folosesc acest antet pentru a indica cadrul sau alt software care alimentează aplicația web. De obicei, ar trebui să eliminați X-Powered-By antet într-un mediu de producție.

Procedând astfel, veți împiedica potențialii atacatori să obțină informații valoroase pe care le-ar putea folosi pentru a exploata vulnerabilitățile cunoscute asociate cu tehnologia dumneavoastră.

Testați configurația de securitate a serverului Express.js

Pentru a evalua starea de securitate a aplicațiilor dvs., vom folosi Anteturi de securitate instrument online. Această aplicație este concepută special pentru a evalua configurația de securitate a antetelor HTTP pentru aplicații de la nivelul clientului, precum și de la nivelul serverului.

În primul rând, trebuie să faceți serverul local Express.js accesibil prin Internet. Există două abordări posibile pentru a realiza acest lucru: implementarea aplicației Express.js pe un server cloud sau utilizarea ngrok.

Pentru a-l folosi, descărcați ngrok zip, extrageți executabilul și lansați aplicația. Apoi, rulați următoarea comandă pentru a găzdui serverul local Express.js cu ngrok.

ngrok http 5000

ngrok va afișa câteva informații scurte care arată astfel:

Copiați documentul furnizat URL de redirecționare și lipiți-l în Anteturi de securitate' caseta de introducere și faceți clic pe Scanează buton.

Odată ce evaluarea securității este finalizată, ar trebui să primiți un raport similar.

Pe baza raportului, este evident că serverul Express.js a primit un rezultat slab F nota. Această notă scăzută este rezultatul absenței antetelor de securitate HTTP esențiale în configurația serverului - absența lor face serverul vulnerabil la potențiale riscuri de securitate.

Integrați Casca în aplicația Express.js

Acum, continuă și integrează Helmet în aplicația ta Express.js. Rulați comanda de mai jos pentru a instala dependența.

npm instalează casca

Actualizați fișierul server.js și importați Helmet.

const cască = cere("cască")

Acum, adăugați Helmet la aplicația dvs. Express.js.

app.use (casca())

În cele din urmă, rotiți serverul de dezvoltare, copiați linkul de redirecționare de pe ale lui ngrok terminal și lipiți-l în Antetul de securitate câmp de intrare pentru a rescana serverul local. Odată ce rescanarea este finalizată, ar trebui să vedeți rezultate similare cu acestea:

După integrarea Helmet, Express.js include mai multe anteturi de securitate esențiale în răspunsul HTTP. Această îmbunătățire substanțială a făcut ca aplicația Express.js să treacă la un A nota.

Deși Helmet nu este o soluție sigură, îmbunătățește semnificativ securitatea generală a aplicației dvs. Express.js.

2. Securizarea aplicațiilor Express.js folosind Joi, o bibliotecă de validare a intrărilor

Joi este o bibliotecă de validare a intrărilor care ajută la securizarea aplicațiilor Express.js, oferind o modalitate convenabilă de a valida și igieniza intrarea utilizatorului. Prin definirea schemelor de validare folosind Joi, puteți specifica structura așteptată, tipurile de date și constrângerile pentru datele primite.

Joi validează intrarea în raport cu schema definită, asigurându-se că îndeplinește criteriile specificate. Acest lucru ajută la prevenirea vulnerabilităților obișnuite de securitate, cum ar fi injectarea de date, cross-site scripting (XSS) și alte atacuri de manipulare a datelor.

Urmați acești pași pentru a integra Joi în aplicația dvs.

  1. Instalează Joi.
    npm instalează joi
  2. Importați Joi în fișierul server.js.
    const Joi = cere("bucurie");
  3. Creați o schemă de validare a datelor Joi care definește structura așteptată și orice constrângeri pentru datele de intrare.
    const schema = Joi.object({
    e-mail: Joi.string().email().required(),
    parola: Joi.string().min(5).max(16).necesar()
    });
  4. Validați toate datele primite folosind schema definită.
    const { eroare, valoare } = schema.validate (req.body);

    dacă (eroare) {
    // Gestionează eroarea de validare
    // De exemplu, returnează un răspuns de eroare
    întoarcere starea res.(400).json({ eroare: eroare.detalii[0].mesaj });
    }

Prin implementarea acestor pași, puteți profita de capabilitățile de validare a intrărilor Joi pentru a vă securiza aplicațiile Express.js. Acest lucru va asigura că datele primite îndeplinesc constrângerile definite, prevenind potențialele amenințări de securitate legate de manipularea datelor.

3. Securizarea aplicațiilor Express.js utilizând mecanismul CORS

Partajarea resurselor între origini (CORS) este un mecanism pe care serverele web îl folosesc pentru a gestiona ce origini — clienții sau alte aplicații de pe partea de server — își pot accesa resursele protejate. Acest mecanism ajută la protejarea împotriva solicitărilor neautorizate de origine încrucișată, prevenind probleme precum atacurile de tip cross-site scripting (XSS).

Pentru a securiza aplicațiile Express.js folosind CORS, urmați acești pași:

  1. Instalați pachetul CORS.
    npm instalează cors
  2. Solicitați și utilizați middleware CORS în fișierul server.js.
    const cors = cere('cors');
    app.use (cors());

Prin integrarea middleware-ului CORS în aplicația dvs. Express.js, activați Partajarea resurselor între origini. Acest lucru vă asigură că atenuați potențialele riscuri de securitate legate de solicitările de origine încrucișată.

Securizarea cu ușurință a aplicațiilor de pe server

Puteți utiliza una sau mai multe dintre aceste măsuri esențiale pentru a îmbunătăți securitatea aplicațiilor dvs. Express.js.

Deși există multe măsuri și abordări disponibile pentru a vă proteja aplicațiile de pe partea de server, concluzia principală este că ar trebui să acordați prioritate securității pe parcursul întregului ciclu de viață al dezvoltării. Aceasta este o sarcină care începe în faza de proiectare și ar trebui să continue chiar până la implementare.