01/02/2012

Spambots. Iscrizioni fasulle bloccate sui forum phpbb3. Ecco come

Da quanto mi risulta da dichiarazioni di amministratori di forum phpbb3 e dalla mia diretta esperienza, il problema degli spambot non è stato risolto.
Dall'osservazione del comportamento degli spambot ho notato che essi le iscrizioni le fanno bypassando completamente capcha, recapthca e altre domande. Perciò capcha, recapthca e altre domande non risolvono niente.
Allora ho fatto una ricerca in rete sulla base di queste considerazione e quasi subito ho trovato un post di un informatico che mi pare di origine asiatica (cinese?). Così ho risolto il problema. Si tratta del sig. Eddie Yee Tak Ma. Il post è questo: http://eddiema.ca/2011/12/29/fighting-spam-account-registration-phpbb3/
Il post e' in inglese. Per questo lo traduco per gli italiani e lo ritocco per rendere più facile l'esecuzione del tutto per l'amministratore del forum e per l'utente.
E' bene dirlo prima perchè è importante. Alla fine provate il tutto. Per provare il tutto fate il logout e iscrivetevi al forum con un altro username.
La procedura è questa:
Chi entra nella pagina di registrazione, dopo la modifica di cui vi parlerò, vede questa immagine:


Come si vede è stata inserita una domanda con risposta obbligatoria che deve essere esatta per proseguire. La domanda in questa caso è: "Scrivi comm14"

Ci sono due passi per realizzare il tutto:
1) Andare nel pannello di controllo amministrazione> Cliccare sulla tab "Utenti e gruppi">cliccare su "Campo personalizzato profilo". Cliccare sul pulsante "Crea nuovo campo". Scegliere "Singolo campo di testo". Come nelle seguente figura:

Vi apparirà la seguente schermata schermata:


Qui dovete creare il Campo Profilo. Vedete che nelle casella c'è scritto "Numeri". Non usate "Numeri", ma scegliete "Singolo campo di testo". Quindi cliccate su "Crea Nuovo campo". Vi apparirà la videata



Qui dovete dare un nome al campo personalizzato. Nel nostro caso campo_testo. Attenzione: deve essere una parola unica. Poi dovete creare la domanda. E nell'area di testo sotto la domanda dare altre indicazioni all'utente. Quindi cliccate sulle caselle come indicato in figura e salvate.
Poi cliccate sul pulsante "Opzioni specifiche del profilo". Vi apparirà la videata:

 Scrivete come è indicato in figura. Se il numero dei caratteri della risposta è molto grande aumentate i numeri.
Quindi cliccate sul pulsante "Opzioni specifiche della lingua" e nella videata che vedrete controllate che tutto sia come avevate già impostato. Quindi salvate.

2) Ora andate sul vostro forum in FTP> includes/ucp/ucp_register.php. Trovate:

// validate custom profile fields
$cp->submit_cp_field('register', $user->get_iso_lang_id(), $cp_data, $error);

if (!sizeof($error))
{
if ($data['new_password'] != $data['password_confirm'])
{
$error[] = $user->lang['NEW_PASSWORD_ERROR'];



if ($data['email'] != $data['email_confirm'])
{
$error[] = $user->lang['NEW_EMAIL_ERROR'];
}
}

Giusto sotto inserite (il codice che segue è stato migliorato: ora l'utente non deve tenere conto delle maiuscole/minuscole. Anche voi nel codice potete scrivere la risposta non tenendo conto delle mauiscole/minuscole: cioè ad esempio "comm14" o "Comm14". Va bene lo stesso.)

// Anti-spam code below ...
$stras=$_POST['pf_campo_testo'];
$stras = strtolower($stras);
if (!sizeof($error)) {
if (!isset($_POST['pf_campo_testo']) ||
$stras != strtolower('comm14')) {
$error[] = 'Risposta alla domanda antispam errata';
}
}
// ...
Potete anche cambiare la domanda, però dovete cambiare di conseguenza la risposta nella pagina includes/ucp/ucp_register.php. Potete usare anche numeri come risposta.
Fatto!
In pratica nel codice indicato sopra è stato inserito il prefisso pf_ davanti al nome del vostro campo personalizzato.
Siccome, come ho detto prima, non servono capctha e recaptcha contro gli spambots potete impostare il captcha più semplice per utenti veri, così per loro sarà più facile iscriversi. Andate nel pannello di amministrazione>Contromisure spambots>plugin intallati>e scegliete "Semplice immagine". Salvate. Il captcha che gli utenti veri vedranno è tipo questa, molto semplice da leggere:
Non avrete più iscrizioni fasulle da spambots. Testato con successo.
 Per chiarimenti o eventuali problemi inserite un commento sotto questo post.

5 commenti - lascia commento:

Sandro said...

Tutto perfetto,
tranne che l'iscritto viene messo tra quelli che necessitano di autorizzazione, mentre nel parametro "Iscrizione utente" c'e' "nessuna attivazione".

Giovanni S said...

Sandro,
ma gli spambots li ricevi ancora?
Ad ogni modo non capisco. Con i tuoi settaggi l'iscritto sarebbe attivato automaticamente. Ho fatto una prova io con i tuoi settaggi, e l'iscritto viene istantaneamente attivato

Sandro said...

Innanzitutto grazie per l'immediata risposta.
Ho riprovato e dopo la mia iscrizione, ricevo il messaggio "Il tuo account è stato creato ma deve essere approvato, controlla i dettagli al tuo indirizzo di posta elettronica." Ed in effetti il nuiovo utente risulta non attivo anche se, come detto, c'e' attiva l'opzione "Nessuna attivazione (accesso immediato)".
Ho dimenticato di dirti che ho il release 3.0.9.

Ancora grazie, Sandro

Giovanni S said...

Mah, a me funziona tutto regolarmente. Forse devi aggiornare alla 3.1.0

Sandro said...

OK provero' quella strada.
Grazie ancora.