Sto sviluppando un'applicazione a singola pagina con un comportamento simile a Google Maps e voglio evitare il più possibile lo spam.
Gli utenti possono registrarsi sul mio sito Web per ottenere l'accesso a un API KEY. Quindi, sul loro sito Web, possono implementare questa applicazione a singola pagina come questa:
<script src="https://www.mywebsite.com/single_page_app.js?key=THEIR_API_KEY"></script>
(Più qualche riga di javascript per associare l'app a <div>
ma non è rilevante)
Questa applicazione a pagina singola verrà utilizzata dagli utenti finali per riempire informazioni (opzioni, data, e-mail, nomi ...) attraverso un modulo a più fasi. Ogni utente finale ha una sessione (i cookie vengono utilizzati con la richiesta CORS) e un token viene inviato all'applicazione per evitare CSRF. Alla fine di ogni fase, i dati raccolti vengono inviati al mio server con il token e salvati nel mio database.
Come posso valutare se i dati inviati al mio server sono spam?
Ho alcune idee (ovvie) che sono:
- Convalida i dati inviati
- Analizza il tempo tra i passaggi e il tempo totale trascorso
- Conta il numero di richieste per IP
- Cerca la richiesta con gli stessi dati (hash md5)
- Cerca l'intestazione Origin e Referrer (CSRF, non proprio spam)
C'è altro che posso fare?
Inoltre, alcune verifiche (come il numero di richieste per IP o i dati duplicati) possono richiedere molto tempo dato che devo consultare il mio database.
Queste verifiche dovrebbero essere fatte da un processo CRON dopo essere state inserite nel database o al volo prima di inserirle nel mio database?
Che cosa devo fare con i dati SPAM?
I dati SPAM possono essere utili per rilevare lo spam futur, dovrei eliminarlo o tenerlo da qualche parte? Per quanto tempo?