Salvataggio della password del nome utente crittografato nella sessione

1

Ho il server Node.js che serve un'app. In quella app ti potrebbe essere chiesto di accedere. Le credenziali di accesso verrebbero autenticate con LDAP.

Tale server potrebbe richiedere / pubblicare dati da altri server tramite REST. Questi endpoint riposanti potrebbero essere protetti con un'autenticazione di base contro lo stesso server LDAP.

È sicuro crittografare <username>:<password> e archiviarlo nella sessione sul server Node.js e, su richiesta, decifrare quelle credenziali e passarle nel valore dell'intestazione Auth di base all'endpoint restful?

La chiave di crittografia verrebbe creata casualmente per quella sessione e poi distrutta alla fine della sessione. Le credenziali sono valide solo per il periodo di una sessione.

    
posta user3018765 21.01.2016 - 16:21
fonte

1 risposta

4

Da un punto di vista strettamente di sicurezza, puoi farlo in questo modo, ma non è l'ideale. Anche se le credenziali sono memorizzate solo temporaneamente sul server (e forse sono configurate per essere memorizzate solo nella memoria), il fatto che siano lì più a lungo di quanto sia potenzialmente necessario rappresenta un rischio, anche se piccolo. Nota che la crittografia delle credenziali in sessione probabilmente non ti aiuta molto, dal momento che la chiave per decodificare deve essere accessibile dal server. Per consentire a qualcuno di leggere una sessione non crittografata, sarebbe necessario ottenere il controllo del server e, se lo facessero, potrebbero leggere anche una sessione crittografata, quindi la crittografia rende leggermente più fastidioso l'attacco da parte dell'attaccante. Detto questo, preferirei una di queste opzioni:

  1. Se sia l'applicazione web che le applicazioni di riposo utilizzano le stesse credenziali LDAP, dovrebbe esserci un modo per configurare le app di riposo in modo che possano condividere lo stesso token utilizzato dall'app Web per autenticare l'utente con ogni richiesta Se riesci a farlo, non dovrai memorizzare nulla in sessione, poiché l'app web potrebbe trasmettere il token ricevuto con ogni richiesta.

  2. Un approccio più semplice sarebbe che il tuo server web avesse il proprio set di credenziali (simili a quelle degli amministratori) per accedere alle rest restanti applicazioni e si autenticasse autonomamente per raccogliere i dati di cui ha bisogno per l'utente, forse interrogando da un particolare ID utente. Naturalmente questo presuppone che i servizi di assistenza siano in grado di fornire questa funzionalità.

risposta data 21.01.2016 - 18:58
fonte