Questa è una domanda generale, ma è suggerita da un'API abbastanza aperta che ho per un servizio di archiviazione di file che deve avere la porta principale bloccata in modo migliore.
Abbiamo un'API come POST '/signup'
che richiede solo un nome utente e una password e crea un utente. È totalmente possibile che qualcuno scriva uno script molto semplice per chiamare /signup
con ogni combinazione di lettere che si adatta alle nostre regole di nome utente e che ci blocca efficacemente dalle nuove registrazioni.
Non ho trovato una enumerazione concisa di tutti i possibili trucchi di sicurezza per l'iscrizione, quindi li avvierò ora e chiederò a qualcuno di contribuire con ciò che ho omesso o ulteriori dettagli di implementazione su un particolare oggetto.
-
Limitazione IP: per ogni registrazione, registra l'indirizzo IP e confrontalo con una tabella dei recenti IP di registrazione per garantire il numero di registrazioni e il tempo trascorso dall'ultima registrazione a questo IP non è sospetto. **
-
Altri accessi autorizzati: utilizza email verificate, numero di telefono o accessi OAuth di terze parti
-
Verifica umana: chiedi agli utenti di completare un Captcha o qualche forma di convalida troppo dispendiosa dal punto di vista computazionale per gestire uno script
** La limitazione IP sembra essere l'unica opzione che non influirà necessariamente sull'esperienza di registrazione del cliente, anche se a costo di implementare un nuovo sottosistema per orchestrare la memorizzazione e la convalida di IP (ci sono servizi di terze parti per questo?) . Inoltre non protegge dal caso estremo in cui una rete di aggressori (o di attaccanti che possono modificare l'IP pubblico) distribuiscono l'attacco su N IP per creare N nomi utente.