Newsgroup: it.comp.www.php
Titolo: Forum e CAPTCHA

Salve, ho un forum in php in cui le varie pagine (per la registrazione, per
l'invio dei msg, ecc.) vengono richiamate tramite il metodo post. E' il
"Flat PHP Board" version 1.2. Diverse persone l'hanno utilizzato su siti di
vario tipo.
Da un po' di tempo č iniziato ad arrivare spam generato in modo automatico.
Dunque:
1. Ho inserito un CAPTCHA nella pagina di registrazione. Ma lo spam arrivava
lo stesso.
2. Ho cancellato gli utenti che erano stati registrati dal bot quando non
c'era il CAPTCHA. Ma lo spam arriva lo stesso.
3. Ora ho cambiato la variabile (quella utilizzata nel POST) che identifica
la pagina di invio del messaggio. Stiamo a vedere se arrivano ancora.
Avete altri suggerimenti?
Grazie
Jimmy

 c'era il CAPTCHA. Ma lo spam arriva lo stesso.
Aggiungo al punto 2 per completezza che ora lo spam arriva senza che gli
utenti compaiano nella lista degli iscritti. Il bot spamma senza registrare
gli utenti.

gli utenti.
Probabilmente non passano neanche dalla pagina.
Prova, nel form di invio, ad aggiungere due campi nascosti
<input type="hidden" name="gardai" value="$CHALLENGE" />
<input type="hidden" name="visits" />
<script language="javascript" type="text/javascript">
	form.nome.visits.value='$RESPONSE';
</script>
e genera $CHALLENGE come uniqid('') e $RESPONSE come
md5("password:$CHALLENGE");.
A quel punto, la form di ricezione basta che contenga
	$ok = false;
	if (isset($_REQUEST['gardai']))
	if (isset($_REQUEST['visits']))
	if ($_REQUEST['visits']==md5("password:$_REQUEST[gardai]"))
		$ok = true;
	if (!$ok)
	{
		readfile("ok.html");
		die();
	}
...e ok.html e' la pagina di "OK! Il post e' stato spedito!" inviato dal
tuo sistema, che ti sarai salvato.
Si', lo so, sarebbe piu' gratificante un
	die("Eat shit and die, motherfucker");
pero'
	a) Ricorda - verra' inviato a tutti quegli utenti che non hanno
	   javascript attivo. Pochissimi - specie se la tua piattaforma
	   usa AJAX - ma...
	b) Piu' tempo passa prima che lo spammer si avveda che gli spam
	   che manda in realta' NON compaiono, meglio e' :-D
Altro trucco: metti nel form un campo hidden contenente la stringa
	$TIMESTAMP:$VALIDATOR
(di nuovo, $VALIDATOR e' MD5('password'.$TIMESTAMP)).
Cosi' sei sicuro che il timestamp non te l'hanno massaggiato, e sai che
l'utente e' passato davvero dal form di invio, e ci ha passato *ALMENO*
tot secondi. Se "tot" e' inferiore a un tot... e magari proporzionale a
quante lettere ci sono nel messaggio... o e' un superdattilografo, o e'
un robospammer.
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

 un robospammer.
Una volta, dopo aver clickato il tasto per accettare un contratto, mi è
capitato che uscisse fuori un alert 'Sicuro di aver letto e compreso
tutto in x secondi?', con, in effetti, x molto, troppo, piccolo. ;-)
Un'altra volta invece, bisognava scrollare fino in fondo la textarea
contenente il contratto, altrimenti un altro alert ti avvertiva che
prima bisognava leggere tutto il contratto.
Per il resto, ottima risposta, ça va sans dire.
Ciao,
Maverick
-- 
«Che non siete più liberi di non avere una casa con letto per dormire.
 Lavorate voi - schiavi dei soldi - che non sentite la puzza della
 schiavitù!» (a Mario di Monte Mario, Roma) # 
http://libre.netsons.org/


....