Può "ricordarmi di me" fare in modo sicuro su un sito Web senza account?

4

Ho un sito Web che consente agli utenti di inviare un modulo senza dover creare un account ed effettuare l'accesso. Tuttavia, al fine di mantenere gli utenti responsabili delle proprie comunicazioni, il modulo richiede loro di fornire l'indirizzo e-mail della scuola (che segue un pattern noto, costante e può essere utilizzato per derivare il nome reale dell'utente).

Il processo al momento è simile a questo:

  1. L'utente invia un modulo con il suo indirizzo email e il contenuto principale che desidera inviare. Entrambi sono memorizzati sul server.
  2. Il sito invia un'email di conferma all'utente all'indirizzo fornito nell'invio del modulo.
  3. L'utente fa clic sul link di conferma nell'e-mail, segnalando all'applicazione di elaborare il contenuto principale del modulo. (Se il collegamento non viene cliccato entro un certo periodo di tempo, il contenuto principale del modulo viene eliminato dal server.)

Nel corso del tempo, questo potrebbe diventare scomodo per i visitatori abituali. Vorrei implementare una casella di controllo "ricordami" che memorizza nella cache la conferma dell'utente. Con questo implementato, dopo aver confermato con successo una submission una volta, le successive presentazioni entro un determinato lasso di tempo non richiederebbero affatto la conferma via email.

La priorità principale è che gli utenti non devono essere autorizzati a inviare le cose nei rispettivi nomi. Non voglio attuare questa convenienza se non so che può essere fatto senza violare quella priorità. Può essere estratto in modo sicuro? Se sì, come?

    
posta Maxpm 16.12.2013 - 17:04
fonte

3 risposte

3

A seconda del tipo di invio che accetti il tuo sito mi verrebbe dato un grave difetto di sicurezza perché accetti invii senza autenticazione. Se Bob conosce l'indirizzo email di Alice, potrebbe inviare i dati a suo nome, quindi non ti puoi fidare della fonte di qualsiasi invio. Sebbene tu invii un'email di conferma, molte persone (e presumo che tu stia parlando di una scuola sono giovani) probabilmente farebbero clic sull'e-mail senza pensarci due volte. Come genitore sarei preoccupato se la scuola dei miei figli avesse un sistema del genere.

Per quanto riguarda la sicurezza, la domanda è sicura da cosa? Perché dovresti preoccuparti di proteggere un indirizzo email che chiunque potrebbe indovinare se conosce la convenzione di denominazione dell'indirizzo e-mail?

EDIT: Se tutto ciò che si vuole fare è farlo in modo che un sistema si ricordi di un indirizzo e-mail, basta usare un cookie, che ricorderà i dati per utenti specifici, quindi funzionerebbe su apparecchiature condivise. O potresti semplicemente dire al browser che è un campo di completamento automatico, stesso effetto. Tengo a mente che i bambini condividono spesso i loro computer, potrebbe essere più opportuno farglielo digitare ogni volta in modo che gli amici non finiscano per inviare i nomi gli uni degli altri.

    
risposta data 16.12.2013 - 17:18
fonte
2

Sì, potrebbe funzionare.

Il link inviato tramite posta elettronica potrebbe indirizzare l'utente a una pagina di conferma che chiede all'utente di leggere la sua presentazione e di confermare che sono stati loro a scriverla. Ciò aggiungerebbe un ulteriore passaggio piuttosto che accettare semplicemente l'invio dopo il primo clic dal collegamento email. Non infallibile, ma almeno hai un processo che richiede una partecipazione attiva al sito per autorizzare l'invio di contenuti.

Potresti stabilire una sessione quando l'articolo viene inviato e imporre che la conferma dell'e-mail avvenga dallo stesso computer e browser.

In breve il processo sarebbe il seguente:

  1. L'utente carica il sito Web e inserisce l'indirizzo email e il contenuto.
  2. L'utente invia il modulo.
  3. Il token di sessione viene generato e memorizzato sul server e nel cookie.
  4. L'utente riceve un'email chiedendo di confermare che il contenuto è di sua proprietà.
  5. L'utente fa clic sul collegamento di posta elettronica e viene reindirizzato a una pagina che convalida il token nel link di posta elettronica e controlla che corrisponda all'utente che ha pubblicato il contenuto dal cookie di sessione.
  6. L'utente è invitato a fare clic su un pulsante nel sito per confermare e ha anche l'opzione remember me .
  7. Se si fa clic sul pulsante, viene selezionato il flag per conservare il contenuto dopo che è stato impostato il timeout.
  8. In caso contrario, il contenuto verrà rimosso dopo il timeout.
  9. L'utente pubblica più contenuti e se il cookie di sessione corrisponde all'indirizzo email e l'opzione remember me è stata selezionata, il contenuto viene pubblicato e il flag per conservare il contenuto viene impostato automaticamente.
  10. Se uno di questi è falso, il processo del passaggio 3 viene invece ripetuto.

  11. L'utente può scegliere log out che rimuoverà la sessione sul server e il cookie.

  12. Se l'utente non visita il sito per un po 'di tempo, il sistema potrebbe scadere automaticamente della sessione (facoltativo, ma consigliato se gli utenti utilizzano account di computer condivisi).

Quanto sopra presuppone che remember me funzioni solo sul particolare account / browser del computer inizialmente utilizzato. Ciò proteggerà gli utenti che inviano contenuti sotto l'identità di altri utenti conosciuti.

    
risposta data 17.12.2013 - 13:10
fonte
0

Dipende molto dall'implementazione tecnica del tuo sito e idea, quindi non credo che ci sia una risposta definitiva.

Ma, in linea di principio:  - se si utilizza un meccanismo di gestione delle sessioni sicuro,  - mettere il timeout a un breve lasso di tempo (meno di 5 '),  - assicurati che un utente non possa fare clic su un link casuale e inviare il modulo con contenuti personalizzati,  - assicurati che nessuno possa riprodurre le richieste  - assicurarsi che un utente non possa inserire alcun codice nel sito Web (ad esempio fornire un comando che modifichi l'utente a cui viene inviata l'email)  - e infine fare in modo che i cookie non contengano informazioni utili a terzi (nessuna informazione identificativa, solo una serie casuale di numeri non sequenziali che collegano alcune informazioni sull'utente al database e quali)  allora potrebbe essere ok.

Se non l'hai fatto, forse dovresti dare un'occhiata al documento owasp top 10 e alla relativa lista di lettura su come evitare questi trabocchetti.

anche, cosa ha detto GdD

    
risposta data 16.12.2013 - 17:17
fonte

Leggi altre domande sui tag