Come proteggere l'endpoint del controller dall'abuso?

0

Sto creando un'applicazione web che prima convalida un codice promozionale tramite la chiamata AJAX e poi se è valido, consente all'utente di compilare il resto del modulo , Utilizzo KnockoutJS per rivelare e nascondere gli elementi.

Il mio problema è, che cosa impedisce a un utente subdolo di creare un generatore di codice e di pompare i codici nel mio endpoint ajax finché non ottiene un codice valido? Qual è il modo consigliato di fermare questo abuso?

PS: nella fase finale del modulo convalido anche il codice promozionale lato server per ogni evenienza.

    
posta Thufir Hawat 12.05.2015 - 02:35
fonte

2 risposte

1

Potresti bloccare l'indirizzo IP dell'utente dopo pochi tentativi entro un certo periodo di tempo (diciamo se un determinato indirizzo IP invia 10 richieste in 1 minuto, quindi blocca l'IP per 10 minuti.

    
risposta data 12.05.2015 - 07:08
fonte
0

Non sono sicuro che questa sia l'idea migliore, ma è un buon inizio impedire che il bruto forzasse il tuo validatore.

Includere un hash casuale con il modulo originale che deve essere passato all'endpoint. Mantieni un contatore nella memoria non persistente facendo riferimento a quel hash che scade dopo un periodo di tempo ragionevolmente breve.

Quindi inizia a restituire 503 errori dopo che è stata soddisfatta una soglia. Trovare il punto giusto è difficile, ma vuoi renderlo facile per un umano, ma frustrante per un cattivo utente.

    
risposta data 12.05.2015 - 02:49
fonte

Leggi altre domande sui tag