Come creare un sistema di account web-app sicuro?

1

ho una certa esperienza (soprattutto da studente) con react and redux, e d'altra parte ho anche un po 'di esperienza con express, normalmente per le mie app (tutte sono molto semplici) faccio una pausa con express , fai interagire espressamente con mongo o qualsiasi db im usando e poi recupera i dati per reagire. È quasi tutta l'esperienza che ho con loro.

Ora voglio creare un'app con un sistema di account: registro + login + autorizzazione roba (livelli account e cose del genere) ma sono piuttosto perso da dove cominciare

l'unica cosa che abbia mai fatto in relazione a questo è stata l'invio dell'utente e della password al server Express, la verifica e quindi l'invio di alcuni dati e l'archiviazione in un cookie, e in questo modo verificare se un utente è autorizzato a fare qualcosa o non

so che questo è il modo più pericoloso per farlo, ecco perché chiedo quale dovrebbe essere la strada giusta, quali tecnologie dovrei usare? come dovrei architettare le mie app?

    
posta user1702436 15.05.2018 - 23:22
fonte

1 risposta

1

Indipendentemente dalla tua esperienza come sviluppatore di software, ¹ se proverai a progettare un sistema di autenticazione da solo, lo farai male. Puoi, ovviamente, conoscere hash e sali e usare PBKDF2 invece di SHA256 e implementare tecniche di forza anti-brute, e ti mancherà ancora una piccola cosa che consentirà a un utente malintenzionato di accedere a tutti gli account del tuo sistema .

Pertanto, ogni volta che è possibile, delegare questa attività ad altre società. Nella maggior parte dei progetti, puoi farlo con facilità implementando OpenID e OAuth2. Ad esempio, puoi consentire a Google di gestire l'autenticazione , il che significa che archivierai solo gli ID degli utenti fornito da Google e non memorizza mai alcuna password.

Ovviamente, Google non è l'unico fornitore. Ci sono Facebook, Twitter e dozzine o centinaia di altri. Nell'ambiente aziendale, avrai spesso un servizio OpenID dedicato utilizzato per Single Sign-On.

Il fatto che tu non abbia a che fare con le password (e nemmeno sul loro server) ha quattro vantaggi molto importanti:

  • Non gestisci il rischio che un hacker rubi le password dei tuoi utenti da te.
  • Ci sono meno possibilità che il tuo sistema venga violato in primo luogo: se non memorizzi qualcosa che un hacker vorrebbe avere, qual è l'obiettivo di hackerarti?
  • Non sprechi sempre il tempo di configurazione dell'autenticazione.
  • Non ci sono aspetti legali relativi alla memorizzazione di dati sensibili.

Si noti che l'implementazione di OpenID / OAuth2 in un sito Web è spesso semplice. La maggior parte delle lingue / framework dispone di librerie che forniscono un modo semplice per includere un collegamento a OpenID / OAuth2.

¹ Se hai dieci anni di esperienza come esperto di sicurezza, probabilmente stai progettando un sistema di login.

    
risposta data 15.05.2018 - 23:56
fonte

Leggi altre domande sui tag