Valutazione del punteggio di spam per un'applicazione a singola pagina

2

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?

    
posta Gary Olsson 08.06.2017 - 12:13
fonte

1 risposta

1

Che cosa succede al tuo database? Pensa dalla prospettiva di un aggressore e cerca modi per abusare del sistema.

Ci sono tre metodi con cui un modulo / API può essere usato per lo spam:

  1. I dati inviati vengono visualizzati su un sito web
  2. I dati inviati vengono inviati via email (di solito a un gruppo ristretto di persone)
  3. Esiste una vulnerabilità nell'implementazione che può essere sfruttata per utilizzare il sito per inoltrare lo spam in un altro modo (rivedere il codice! questo metodo non è altrimenti discusso qui)

Se i dati vengono visualizzati su un sito Web (o se un utente malintenzionato fa questa ipotesi), è probabile che tu veda spam di commenti aspirante a:

  1. Esegui ottimizzazione dei motori di ricerca
  2. Diffondi malware (tramite link e / o allegati)
  3. Danneggia la credibilità del tuo sito o altrimenti fornisci rumore
  4. Troll tu o gli utenti del tuo sito
  5. Diffondi notizie false o altra propaganda (essenzialmente # 4 e # 1)

Puoi combattere il modulo → e-mail spam e spam nei commenti web come segue:

  • Utilizza blacklist come DNSBLs URI per combattere lo spam nei link
  • (solo Web) Render link con nofollow , come <a href="…" rel="nofollow">this</a>
  • Non consentire il collegamento di file non multimediali
  • Limite di frequenza: "Troppe richieste da questo IP, riprova più tardi"
  • Limita i privilegi per i nuovi arrivati, ad es.
    • "Non puoi allegare file fino a ..."
    • "Non puoi fornire link fino a ...", quindi usa nofollow, quindi consenti pienamente
    • "Non puoi pubblicare immagini fino ..."
    • "Non puoi pubblicare più di una volta all'ora fino a ..."
  • Chiedi a un team di moderazione di esaminare ogni post prima che diventi pubblico
    • (solo Web) Crowdsource it! Prendi in considerazione un sistema di moderazione degli utenti come Discourse
  • Costruisci un algoritmo di apprendimento automatico per automatizzare il team di moderazione umana
  • Implementa un captcha (e rendilo più difficile per i nuovi arrivati che per gli utenti normali)

Il "successo" meno visibile è per un attaccante, gli attacchi meno persistenti saranno (anche se ad alcuni attaccanti non interessa). Anche reclamare di avere una recensione del moderatore ma semplicemente ritardare di qualche ora i post di un nuovo utente potrebbe ostacolare lo spam.

Se invii email, puoi utilizzare internamente uno dei molti sistemi bayesiani per vedere se vuoi abbandonare l'invio dal tuo database e / o da spingere esternamente. (Dovraiancoraaddestrareregolarmentequestosistema.)Potrestianchevolerusareun Provider di servizi di posta elettronica (ESP) per gestire la tua reputazione in uscita per te.

Puoi segnalare immagini di spam a Knujon ("No Junk" scritto al contrario) nel suo caricamento di file di sole immagini . Puoi segnalare i siti di destinazione del phishing su PhishTank .

    
risposta data 04.12.2017 - 22:05
fonte

Leggi altre domande sui tag