Prima di tutto, sono nuovo di questa intera cosa criptata. Ecco il mio scenario:
Ho un'app client, che invia una stringa da 20 cms al mio server. Il server controlla quindi se il nome corrisponde effettivamente al limite di caratteri, quindi registra il nome, l'ora e l'IP in un database sqlite3.
Il mio problema è che ho un troll che è deciso a distruggere il mio sito. Innanzitutto, non esistevano protezioni o filtri sui nomi utente aggiunti. Ora ho aggiunto il filtro char e mi sono anche assicurato di accettare solo 1 nome per indirizzo IP. Tutto funziona, ma ora ha creato un bot che gli ottiene un nuovo proxy ogni volta prima di fare la richiesta di ottenere.
Sono cambiato tanto quanto penso che posso lato server, penso che ho bisogno di implementare una patch per applicazioni lato client. Si noti inoltre che questo processo si verifica una volta al minuto fino alla chiusura dell'app client.
Devo verificare che la richiesta di ottenere provenga dalla mia app client e non da un bot. Questo ragazzo è un po 'pazzo di pisciare nel mio / chiunque stia cercando di usare il sito legittimamente Cheerios.
Idea 1: creazione di assegni token casuali. Processo: l'app client (abbreviata in app) invia una richiesta di token non modificato, le risposte del server con una stringa casuale. L'app client esegue l'hashing della stringa e risponde al server con la stringa hash e unhashed. Il server esegue l'hashing su unhashed e lo confronta con quello hash. Se tutte le corrispondenze, aggiunge il nome al database.
Un problema con questo è A) Devo assicurarmi che la stringa unhashed non venga usata più di una volta per un periodo di tempo, ma potrei aggiungerli a un DB e usare Cron o qualcosa per cancellare il database di tanto in tanto. B) è che devo avere il mio algoritmo di hashing completamente protetto, sia sull'app che sul server. Se hanno eliminato l'algoritmo (o semplicemente identificato il metodo di hashing che sta usando), potrebbero creare un bot con quello rappresentato.
Userei qualcosa come un captcha, ma è solo un thread in background che invia regolarmente la richiesta get, non c'è alcuna interazione dell'utente con esso.
Qualsiasi aiuto o suggerimento è molto apprezzato, grazie se hai fatto tutto questo testo ...