Umano o Bot: dietro i controlli di scena vs CAPTCHA

4

Sto lavorando a un'app Web nel momento in cui stiamo cercando di rimuovere qualsiasi frizione degli utenti e i passaggi in eccesso dalla nostra pagina di creazione degli utenti. Per evitare che i robot informatici invadano completamente la nostra app, abbiamo bisogno di avere una sorta di CAPTCHA, ma questo porterebbe via dall'idea principale dietro l'app che è la semplicità.

Se osservi i suggerimenti delle alternative qui su Stack Exchange, sembrano comunque portarli via dalla UX e lasciare spazio ai robot per risolvere il problema. Suggerimenti qui:

Questo mi ha fatto pensare, perché non possiamo rilevare se un utente è reale o un bot che utilizza una serie di metodi anti-bot dietro le quinte come honeypot, time-stamp, POST e GET request, sia che JavaScript sia abilitato, controlla l'intestazione HTTP e altri.

C'è una ragione tecnica per cui questo non è stato fatto? Pensando di scrivere una biblioteca io stesso altrimenti:).

    
posta LogiKal 27.08.2014 - 23:02
fonte

2 risposte

2

I CAPTCHA non sono necessariamente necessari né sono l'unica soluzione. Difesa in profondità significa usare più tattiche, livelli e tecniche. Se hai informazioni puoi provare a determinare la probabilità che il client che parla alla tua app web sia (A) un umano e (B) un umano che desideri accedere al tuo sito.

Ci sono servizi di reputazione là fuori che possono fornire liste nere basate su rapporti o clienti-pari, i fornitori di rete a monte o fornitori di CDN possono offrire anche tali servizi. Puoi scegliere di bloccare l'accesso da determinati intervalli nocivi conosciuti, paesi di origine cattivi o improbabili, ecc.

È possibile ottimizzare la risposta in base al rischio, al costo, ecc. È inoltre possibile regolare manualmente le metriche nel tempo in base al numero previsto di clienti rispetto ai clienti che non si registrano, ripetere gli indirizzi IP, rintracciare i codici di invito via e-mail, ecc.

Qualche tempo fa ho visto una buona presentazione su " Repsheet " dove il relatore ha parlato di tutto l'analisi comportamentale e i dati che la sua azienda utilizza per identificare i probabili truffatori e in che modo hanno utilizzato più tecniche per affrontarlo. Le diapositive erano più accompagnamento piuttosto che stand alone, ma dovresti comunque essere in grado di seguire le tecniche. Alcuni componenti del sistema sono disponibili nel repoheet github repo .

    
risposta data 28.08.2014 - 04:11
fonte
1

La risposta complessiva è: puoi distinguere tra umani e spambot in base alla disponibilità degli sviluppatori spambot ad attaccarti in modo specifico. Esistono essenzialmente due categorie di difese: distinzione bot / umana e metodi per aumentare il costo di effettuare attacchi.

Distinguere i bot dagli umani

Molte tecniche alternative ai CAPTCHA nella prima famiglia sono state già proposte su Stack Exchange: Esiste una vera alternativa all'utilizzo delle immagini CAPTCHA?

Non discuterò CUPTCHU e CIPTCHI e altri CAPTCHA "utilizzabili". Tutti richiedono che gli umani svolgano un compito per discriminarli contro i robot. Probabilmente la maggior parte di essi può essere infranta se un avversario li bersaglia in modo specifico, e tutti richiedono ancora di sprecare il tempo del tuo utente - almeno uno di loro si preoccupa di UX ed è tollerabile in alcuni contesti di utilizzo dove la giocosità è un buon valore per l'esperienza che stai creando.

Aumentare il costo degli attacchi

Il mio preferito è semplicemente utilizzare gli schemi di identità federati in modo da affidarsi ad altri provider di identità per confermare se un IP specifico ha un account con essi - OAuth lo fa - e che questo account ha una quantità significativa di valore ( per un account di posta elettronica, ha ricevuto notevoli quantità di posta da altri account ritenuti reali *) - nessuno lo fa ancora per mia conoscenza.

Si noti che tale approccio non fornisce alcuna protezione contro i dispositivi infetti piuttosto che gli spambots, cosa che è una preoccupazione crescente per siti come Facebook in cui alcuni account reali e attendibili vengono violati a causa di estensioni dannose del browser e iniziano a servire spam (nessun URL, è un discorso accademico).

Altri metodi possono essere utili, se hai dati empirici che dimostrano che funziona per chiunque ti attacchi. Puoi ridurre il numero di account creati per IP, ad es. settimana / mese prima di servire un CAPTCHA se stai affrontando spambot che riutilizzano gli stessi IP botnet per creare account invece di cambiare sistematicamente. È possibile eseguire l'apprendimento automatico sui dettagli degli spambot esistenti (forma di nickname, dettagli riempiti) per identificare un recidivo ricorrente e utilizzarlo come filtro aggiuntivo per decidere se applicare CAPTCHA o meno. Ovviamente ciò richiede molto di manutenzione e funziona solo contro avversari non motivati, quindi se sei una piattaforma da un milione di utenti probabilmente sei sfortunato. Gli avversari attivi superano banalmente questi casi di apprendimento automatico (vedi conferenze AISec).

I CAPTCHA sono un no no, in ogni caso

Se ritieni che i CAPTCHA siano assolutamente necessari in alcuni casi, devi comunque implementare altri metodi per rilevare i trasgressori e servire solo CAPTCHA quando hai dei dubbi su un account. È molto più probabile che un vero utente fa un CAPTCHA di uno spambot riesca a 4 o 5 diversi controlli.

* fare affidamento su catene di fiducia si apre agli attacchi di sybil, ma questi mi sembrano molto più facili da difendersi (SybilGuard e qualsiasi altra cosa è stata pubblicata da allora) che ad es. rilevamenti automatici di commenti / revisioni automatizzati e molto più gradevoli all'utente rispetto all'uso dei CAPTCHA (con tassi di errore fino al 40% secondo la ricercatrice di usabilità Angela Sasse).

    
risposta data 28.08.2014 - 00:19
fonte

Leggi altre domande sui tag