Se stai appena iniziando il tuo viaggio nello sviluppo web o in Node.js, potresti non sapere quanto sia importante proteggere la tua app.

Express.js fornisce una soluzione performante per la creazione di app Web back-end, ma non è all'altezza della sicurezza. Quando crei un'applicazione web, hai bisogno di adeguate misure di sicurezza per proteggere i dati dei tuoi utenti.

Fortunatamente, ci sono metodi che puoi adottare per migliorare la sicurezza delle tue applicazioni Express.js. Tutti questi suggerimenti contribuiranno a rafforzare la sicurezza delle tue applicazioni utilizzando approcci diversi.

Configurare un'applicazione Express.js

Inizia impostando una demo Server web Express.js utilizzando npm, il Node Package Manager. Crea una cartella di progetto localmente e cambia la directory in essa sul tuo terminale.

progetto espresso mkdir
progetto espresso cd

Quindi, crea un file pacchetto.json file nella directory principale.

npm init -y

Vai avanti e installa Express.js.

npm install express

Infine, crea un file

instagram viewer
server.js file nella directory principale della cartella del progetto e aggiungi il seguente codice per configurare un server Web di base.

cost espresso = richiedere("esprimere")
cost app = espresso()
cost PORTA = process.env. PORTO || 5000

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

app.listen (PORTA, () => {
consolare.tronco d'albero(`Avvio del server in corso http://localhost:${PORTA}`)
})

Avvia il server con questo comando:

nodo server.js

Ora sei pronto per esplorare alcune delle misure che puoi utilizzare per proteggere la tua applicazione Express.js.

1. Protezione delle applicazioni Express.js tramite Helmet

Casco è un middleware Node.js che aiuta a proteggere le app lato server impostando varie intestazioni di sicurezza HTTP. Queste intestazioni forniscono meccanismi di difesa essenziali contro comuni vulnerabilità di sicurezza back-end, come cross-site scripting (XSS), cross-site request forgery (CSRF) e molti altri.

Express.js non configura le intestazioni di sicurezza HTTP per impostazione predefinita, lasciando un potenziale difetto di sicurezza che espone intestazioni potenzialmente sensibili. Utilizzando queste informazioni, gli attori malintenzionati potrebbero essere in grado di ottenere l'accesso non autorizzato o interrompere in altro modo la tua app.

Helmet funge da scudo vitale, assicurando che le risposte HTTP dell'applicazione adottino le misure di sicurezza necessarie, riducendo notevolmente la potenziale superficie di attacco.

Esplorare la sicurezza delle applicazioni Express.js senza casco

Con il server in esecuzione, esamina le intestazioni dell'applicazione. Vai avanti e effettuare richieste HTTP all'API utilizzando Postman o qualsiasi altro client che mostra le intestazioni di risposta. La maggior parte dei browser include una serie di strumenti per sviluppatori che ti consentono di farlo.

Quando invii richieste all'endpoint home, dovresti osservare risultati simili nel file Intestazioni sezione della risposta all'interno di Postman.

Notare il X-Powered-By intestazione. In genere, le tecnologie back-end utilizzano questa intestazione per indicare il framework o altro software che alimenta l'applicazione web. Di solito dovresti rimuovere il file X-Powered-By intestazione in un ambiente di produzione.

In questo modo, impedirai a potenziali aggressori di ottenere informazioni preziose che potrebbero utilizzare per sfruttare le vulnerabilità note associate al tuo stack tecnologico.

Testare la configurazione di sicurezza del server Express.js

Per valutare lo stato di sicurezza delle tue applicazioni, utilizzeremo il file Intestazioni di sicurezza strumento in linea. Questa app è specificamente progettata per valutare la configurazione di sicurezza delle intestazioni HTTP per le applicazioni lato client e lato server.

Innanzitutto, devi rendere il tuo server Express.js locale accessibile tramite Internet. Esistono due possibili approcci per raggiungere questo obiettivo: distribuire l'applicazione Express.js su un server cloud o utilizzare ngrok.

Per usarlo, scarica il file ngrok zip, estrarre l'eseguibile e avviare l'applicazione. Quindi, esegui il seguente comando per ospitare il tuo server Express.js locale con ngrok.

ngrok http 5000

ngrok produrrà alcune brevi informazioni simili a queste:

Copia il fornito URL di inoltro e incollalo nel Intestazioni di sicurezza' casella di inserimento e fare clic su Scansione pulsante.

Una volta completata la valutazione della sicurezza, dovresti ricevere un rapporto simile.

Sulla base del rapporto, è evidente che il server Express.js ha ricevuto un punteggio scarso F grado. Questo livello basso è il risultato dell'assenza di intestazioni di sicurezza HTTP essenziali nella configurazione del server: la loro assenza rende il server vulnerabile a potenziali rischi per la sicurezza.

Integra Helmet nell'applicazione Express.js

Ora vai avanti e integra Helmet nella tua applicazione Express.js. Eseguire il comando seguente per installare la dipendenza.

npm installa il casco

Aggiorna il tuo file server.js e importa Helmet.

cost casco = richiedere("casco")

Ora aggiungi Helmet alla tua applicazione Express.js.

app.use (casco())

Infine, avvia il server di sviluppo, copia il link di inoltro da ngrok's terminale e incollalo nel file Intestazioni di sicurezza campo di input per ripetere la scansione del server locale. Una volta completata la nuova scansione, dovresti vedere risultati simili a questi:

Dopo aver integrato Helmet, Express.js include diverse intestazioni di sicurezza essenziali nella risposta HTTP. Questo miglioramento sostanziale ha causato la transizione dell'applicazione Express.js a un file UN grado.

Sebbene Helmet non sia una soluzione infallibile, migliora in modo significativo la sicurezza complessiva della tua applicazione Express.js.

2. Protezione delle applicazioni Express.js tramite Joi, una libreria di convalida dell'input

Joi è una libreria di convalida dell'input che aiuta a proteggere le app Express.js fornendo un modo conveniente per convalidare e disinfettare l'input dell'utente. Definendo gli schemi di convalida utilizzando Joi, puoi specificare la struttura prevista, i tipi di dati e i vincoli per i dati in entrata.

Joi convalida l'input rispetto allo schema definito, assicurandosi che soddisfi i criteri specificati. Questo aiuta a prevenire vulnerabilità di sicurezza comuni come l'iniezione di dati, il cross-site scripting (XSS) e altri attacchi di manipolazione dei dati.

Segui questi passaggi per integrare Joi nella tua applicazione.

  1. Installa Gio.
    npm installa joi
  2. Importa Joi nel tuo file server.js.
    cost Gio = richiedere('joi');
  3. Crea uno schema di convalida dei dati Joi che definisce la struttura prevista e gli eventuali vincoli per i dati di input.
    cost schema = Joi.oggetto({
    email: Joi.string().email().required(),
    password: Joi.string().min(5).max(16).necessario()
    });
  4. Convalida tutti i dati in entrata utilizzando lo schema definito.
    cost { errore, valore } = schema.validate (req.body);

    Se (errore) {
    // Gestisci l'errore di convalida
    // Ad esempio, restituisce una risposta di errore
    ritorno res.stato(400).json({ errore: dettagli circa l'errore[0].Messaggio });
    }

Implementando questi passaggi, puoi sfruttare le funzionalità di convalida dell'input di Joi per proteggere le tue applicazioni Express.js. Ciò garantirà che i dati in entrata soddisfino i vincoli definiti, prevenendo potenziali minacce alla sicurezza per la manipolazione dei dati.

3. Protezione delle applicazioni Express.js tramite il meccanismo CORS

Cross-Origin Resource Sharing (CORS) è un meccanismo utilizzato dai server Web per gestire quali origini (client o altre applicazioni lato server) possono accedere alle proprie risorse protette. Questo meccanismo aiuta a proteggere da richieste cross-origin non autorizzate, prevenendo problemi come gli attacchi XSS (cross-site scripting).

Per proteggere le applicazioni Express.js utilizzando CORS, attenersi alla seguente procedura:

  1. Installa il pacchetto CORS.
    npm install cors
  2. Richiedere e utilizzare il middleware CORS nel file server.js.
    cost cor = richiedere('cor');
    app.use(cors());

Integrando il middleware CORS nella tua applicazione Express.js, abiliti la condivisione delle risorse tra le origini. Ciò garantisce di mitigare i potenziali rischi per la sicurezza correlati alle richieste tra le origini.

Protezione delle applicazioni lato server con facilità

Puoi utilizzare una o più di queste misure essenziali per migliorare la sicurezza delle tue applicazioni Express.js.

Sebbene siano disponibili molte misure e approcci per proteggere le tue applicazioni lato server, il punto chiave è che dovresti dare la priorità alla sicurezza durante l'intero ciclo di vita dello sviluppo. Questa è un'attività che inizia nella fase di progettazione e dovrebbe continuare fino alla distribuzione.