Campo utente a menu a discesa personalizzato contiene un valore non selezionabile

Nel mio forum ho questo campo personalizzato che appare quando gli utenti si registrano.

Sembra però che i bot spammino creino account con un valore per quel menu a tendina che non è selezionabile. Questo lo rende quasi funzionale come una trappola per identificare quali account non sono stati creati da umani. Ma potrebbe anche essere un problema di sicurezza?

3 Mi Piace

Questo succede perché i bot non utilizzano la registrazione tramite interfaccia grafica che include i validatori. Questi bot spam inviano richieste automatizzate all’endpoint API di registrazione. Penso inoltre che, quando i campi sono opzionali, la validazione lato backend a volte non sia sufficientemente rigorosa e continui a salvare i valori nel database.

Non sono sicuro di quale sia la soluzione principale, ma probabilmente hai anche bisogno di configurazioni o strumenti anti-spam aggiuntivi. (Io uso un bot anti-spam basato sull’intelligenza artificiale sul mio forum pubblico e funziona benissimo, e anche io ho campi opzionali nella registrazione.)

Puoi trovare tutti gli utenti del tuo forum utilizzando l’Esploratore Dati - credo che questo funzioni, anche se non l’ho ancora testato (assumendo che il campo personalizzato sia user_field_1):

SELECT user_id, value 
FROM user_custom_fields 
WHERE name = 'user_field_1' 
AND value NOT IN ('Bro', 'Sis', '')

Se hai recentemente modificato il campo da un input di testo a un menu a tendina, questo potrebbe spiegare anche alcuni di quegli account bot con valori del campo errati.

2 Mi Piace

@Lilly ha ragione. Non c’è abbastanza diffidenza nel back-end qui.

Poiché è emerso questo problema, ho deciso di verificare se interessasse anche la pagina del profilo, ma non è così. Sanitizziamo correttamente i valori quando gli utenti aggiornano il proprio profilo. Questo ha reso relativamente semplice copiare quella logica di sanitizzazione anche all’endpoint di registrazione. Una PR è disponibile qui:

Non penso che lo sia tecnicamente. Sì, gli utenti possono inserire valori arbitrari, ma viene comunque applicata la sanitizzazione prima che questi vengano visualizzati da qualsiasi parte (quindi nessun vettore XSS). Inoltre, il limite di lunghezza era già correttamente applicato anche nell’endpoint di registrazione (quindi nessun vettore DoS).

2 Mi Piace