Accesso via link in Email - Come posso renderlo più sicuro?

3

Ho bisogno del tuo parere professionale su questo argomento, per favore.

L'app che sto sviluppando ha 2 parti: Insegnanti & studenti .
Gli insegnanti utilizzano l'app per creare un progetto e associarvi gli studenti.
Quindi, studenti accede al progetto nel nostro sistema e completa alcune attività.

Non vogliamo che gli utenti registrino o utilizzino un account esistente (tramite oAuth2). Desideriamo semplicemente che abbiano un modo semplice e veloce per accedere al sistema, con il minimo di configurazione possibile.
Si noti che è necessario consentire più voci da posizioni diverse.
Ogni studente avrà più "punti di accesso", uno per ogni progetto a cui è assegnato.

La ragione per cui ci preoccupiamo così poco dei possibili furti che possono verificarsi è che gli studenti hanno possibilità molto limitate, e i dati che vengono mostrati non sono confidenziali.

Posso pensare a 2 opzioni adatte:

  1. Invia allo studente un'email con un link che contiene una chiave di accesso, ad esempio: example.com/students/skfn38rhsah93e2dsasdsd2 .
    Il link non scadrà.
  2. Invia allo studente un'email con un link e una chiave di accesso breve che sarà richiesta dal link, ad esempio:
    Link: example.com/students/dfwkl4tihifhdso03n
    Chiave di accesso: A7F21D

La seconda opzione è più sicura perché la prima verrà salvata nella cronologia del browser, inviata nel referrer http e generalmente esposta. L'utilizzo della seconda opzione assicura che chiunque abbia accesso al link abbia / abbia avuto accesso all'account Email. Tuttavia, è una procedura leggermente più lunga per lo studente.

Quindi le mie domande sono:

  1. La sicurezza aggiuntiva che offre la seconda opzione vale il processo più lungo, secondo lei? So che questa è una domanda soggettiva, ma la tua opinione significa molto per me.
  2. Se pensi che la prima opzione sia migliore, per quanto tempo dovrebbe essere la chiave di accesso?
    Voglio incorporare l'ID studente e l'ID del progetto al suo interno, quindi stavo pensando di utilizzare JWT, ma sono 220 caratteri. È troppo? ( URL possono contenere fino a 2000 ).
  3. Se pensi che la seconda opzione sia migliore, per quanto tempo dovrebbe essere la chiave di accesso?
    Come dovrei progettare il link? Come nella prima opzione? (usando una JWT)
  4. C'è un modo migliore?

Grazie per l'aiuto!

Nota: sto pensando di usare SSL, solo FYI.

    
posta Neta 20.12.2015 - 19:22
fonte

1 risposta

5
  1. Is the added security the 2nd option delivers worth the longer process, in your opinion? I know this is a subjective question, but your opinion means a lot to me.

Hai visto correttamente la sicurezza che potrebbe causare con la cronologia del browser. Solo tu puoi determinare se ne vale la pena.

Tuttavia, invece di alcune stringhe casuali inviate via e-mail, che costringono principalmente gli studenti a trovare l'e-mail su ciascuna connessione, è possibile chiedere alcune informazioni che potrebbero già conoscere o che sono più facilmente raggiungibili da loro (ultimi numeri del ID studente, qualcosa come la data di nascita, ecc.).

  1. If you think the 1st option's better, how long should the access key be? I want to embed the student ID and the project ID inside it, so I was thinking about using JWTs, but they are 220 characters. Is it too much? (URLs can contain up to 2000).

Se possibile, eviterei di inserire qualsiasi informazione nella chiave di accesso, ma uso una stringa casuale. Quindi, sul lato server, è possibile avere un database che associerà questa chiave di accesso casuale alle informazioni desiderate (ID studente, ecc.). In questo modo, dato un link, non sarà possibile per gli studenti indovinare altri link validi.

Riguardo alla lunghezza, circa 20 caratteri come ora sembrano a posto.

Penso che questo risponda anche alle tue ultime due domande.

    
risposta data 20.12.2015 - 20:51
fonte

Leggi altre domande sui tag