Mitigate invia nuovamente l'e-mail di confimazione

3

Mentre scrivevo il codice del server per invia nuovamente la pagina di conferma mi è venuto in mente qualcosa: un utente malintenzionato potrebbe fare diverse richieste a /resendemail?user=blah (esempio URL) e inondare tale utente con e-mail di registrazione (ovviamente, come a patto che l'utente esista e non abbia confermato la sua email).

La mia prima idea era di limitare la richiesta per sessione, tuttavia, questo può essere aggirato molto facilmente. Il limite per-IP è troppo difficile da implementare e può anche essere bypassato (cioè utilizzando diversi proxy), quindi sono sicuro che ci sia qualcosa di abbastanza semplice da mitigare questo tipo di exploit.

    
posta Nacib Neme 01.03.2015 - 20:48
fonte

4 risposte

7

Limite di velocità su base per utente o per indirizzo email. Dal momento che inviare nuovamente le e-mail di conferma è raro, impostare il limite assurdamente basso (ad esempio, due re-invia al giorno) dovrebbe essere sufficiente per evitare di inondare un utente.

    
risposta data 01.03.2015 - 22:18
fonte
5

Aggiungi un timestamp al campo email, se un e-mail è stato inviato nuovamente negli ultimi x minuti non inviare un'altra email. Non userei un captcha visto che i bot sono più bravi a risolvere quelli degli umani comunque.

    
risposta data 01.03.2015 - 22:19
fonte
3

Al lavoro, ho implementato un sistema molto rudimentale e di base per un modulo di contatto.

Ogni IP può inviare solo 5-9 email al giorno (numero casuale generato da IP).

Puoi adattare questo e aggiungere alcune opzioni (per esempio), consentire solo 1 o 2 al giorno nel caso in cui l'utente lo chieda in modo un po 'costante.

O blocca del tutto e consente solo di inviare nuovamente se viene introdotto un codice specifico.

Invia un codice di ripristino con un link specifico.

Poi quella persona visita il link, introduce il codice e solo allora la persona può effettivamente recuperare la password.

    
risposta data 02.03.2015 - 02:06
fonte
0

Oltre alla limitazione della velocità, puoi rendere la tua infrastruttura di posta elettronica segnalata alla tua app, indipendentemente dal fatto che l'email sia stata accettata dal server di destinazione o meno; e rate-limit solo se le e-mail vengono consegnate con successo.

Un buon vantaggio di questo metodo è che la tua app può dire all'utente se l'e-mail che hanno inviato è effettivamente arrivata e li sta aspettando nella loro posta in arrivo o se devono provare un indirizzo email diverso.

    
risposta data 02.03.2015 - 11:13
fonte

Leggi altre domande sui tag