Newsgroup: it.comp.www.php
Titolo: antispam per guestbook

ciao a tutti,
ho deciso di correre ai ripari, perchè mi arrivano in media 5/6
messaggi di spam su un guestbook php che ho messo online un anno fa...
Ho già messo un controllo JS sul submit del form (impedisce
l'inserimento dei caratteri < e >) ma non è sufficiente. Evidentemente
tutto questo viene fatto in modo automatico.
Non sono molto pratico di php e chiedo aiuto a voi :)
Al momento del submit la pagina php richiama se stessa.
Vorrei mettere un controllo in testa alla pagina in cui dichiaro che se
il campo "messaggio" contiene i caratteri < o > il messaggio non viene
inserito.
Mi basterebbe capire come costruire questo controllo!
grazie in anticipo!!
MiKk

 l'inserimento dei caratteri < e >) ma non è sufficiente. 
Cerca questo vecchio post: 443a98de$0$18296$
4faf...@reader1.news.tin.it
-- 
I am what I am, I do what I can
Do. Or do not. There is not try.

>Cerca questo vecchio post: 443a98de$0$18296$
4fafb...@reader1.news.tin.it
letto grazie, ma vorrei provare a risolvere la cosa a livello di
controllo codice in php!

Mikk wrote:

E secondo te quel post di cosa parla?


non mi sono spiegato bene.
in quel post vengono messe in luce due soluzioni:
- tempo di delay
- controllo JS
Il controllo JS l'ho già implementato, mi interessava capire come
agire sul POST che ricevo, tramite un controllo, più che sul tempo di
delay.

Mikk wrote:

Perche' non inizi implementando il tempo di deplay e vedi se risolve i
tuoi problemi?


tuoi problemi?
perchè non saprei manco da dove partire :-)
vediamo se il post mi illumina in ta senso..

Mi basterebbe capire come costruire questo controllo!
Quello che ti serve è questo: 
http://it2.php.net/manual/it/function.strstr.php
http://it2.php.net/manual/it/function.strip-tags.php
http://it2.php.net/manual/it/function.htmlspecialchars.php
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

grazie francesco,
in effetti le due funzioni strip tags e htmlspecialchars le avevo
valutate ma poi le ho abbandonate, perchè a me non interessa fare una
sostituzione, ma proprio bloccare l'invio in presenza di determinati
caratteri.
La funziona strstr invece non la conoscevo...proverò a partire da
quella base....
grazie!

caratteri.
Ah, allora prova ad usare anzi questa:
http://it2.php.net/manual/it/function.strrpos.php
Meglio ancora sarebbe utilizzare un'espressione regolare, ma intanto
accontentiamoci di questa :-)


 tuoi problemi?
Ha risolto i miei.
Per ora siamo a qualcosa come 1 spam passato su un totale di 40.
Se qualcuno volesse il sorgente glielo regalo, tenendo presente però che 
è stato aggiunto a posteriori su un vecchio sito fatto da cani.
L'idea, lo ribadisco per correttezza, non era mia. L'ha postata un 
"tipo" dal nick Luca(riello) qui dentro. ;)
ciao, f.

Ottima dritta Francesco.
Sto provando con una cosa di questo tipo:
      <?php
      $messaggio = $_GET['comm'];
      $controllo =  strrpos($messaggio, "<);
	if($controllo != false) {
	      echo("inserisci html e ti spezzo le gambe!!");
	} else {
		      echo("cosi va bene!");
	}
      ?>
ovviamente gli echo li sostituirò con il codice appropriato :)
che ne dici?

@cujo
se fossi così gentile da postare il sorgente ... non mi dispiacerebbe
agire su più fronti :-)
grazie mille!

 ha scritto nel messaggio
news:1145370927.8...@z34g2000cwc.googlegroups.com...

metti un immagine generata da php (il codicino)
e ti 6 tolto la bega
MiKk

 accontentiamoci di questa :-)
ottimo!!
sembra funzionare...
un'ulteriore domanda: sto provando a discriminare 2 caratteri (non solo
il "<" ma anche il suo equivalente html ovvero "&lt;") ma il controllo,
messo in questa forma, funzia solo se inserisco entrambi. Io invece
vorrei che scattasse al verificarsi di anche solo UNA delle condizioni!
			$messaggio = $text;
			$controllo =  strrpos($messaggio, "<");
			$controllo2 = strrpos($messaggio, "&lt;");
			if(($controllo != false) AND ($controllo2 != false)) {
				echo("vietato inserire html");
				}
			else {
                                                echo("codice valido");
}
grazie!!

 e ti 6 tolto la bega
l'ho preso in considerazione come extrema ratio....io stesso odio dover
inserire il codice, preferisco provare altre soluzioni prima di questo!
grazie cmq ;-)

e ti 6 tolto la bega
Guarda che vuole controllare se nel testo inserito ci sono tag html,
quello che proponi tu è un'altra cosa.



se ti chiedo come vado negli usa e uno ti chiede se e' meglio nuotare a
libero o a delfino
che gli dici ?
io che si prende l'aereo o la nave ma di sicuro a nuoto non ci puo' andare
a certe richieste puo essere utile dare una soluzione diversa dalla
richiesta
non  voglio fare polemica


non  voglio fare polemica
Neppure io, hai fatto bene a dirgli quella cosa, ma non fargli credere
che con quello risolve il problema dei tag html.


 			$controllo2 = strrpos($messaggio, "&lt;");
Certo che ti stai cimentando su di una cosa che tutti pagherebbero a 
peso d'oro e non hai neanche un po di tecnica di programmazione .. :P 
senza critiche inutili .. io ti consiglierei di studiarti almeno le basi 
e poi andare per la tua strada .. ;)
-- 
!!! SODDISFATTI O RIMBORSATI !!! Nessuno si è mai lamentato della nostra 
offerta 2x1. Morire in 2 e pagare per 1.
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

grazie ad entrambi per in consigli!
Per ora il metodo di controllo "tiene"....sono due giorni che non
ricevo spam....ma aspetto ancora un pò per affermare che funziona bene
:-)
ho fatto dei test in locale, riproducendo un form che invia tag html
direttamente al guestbook, eludendo i controlli Js, ed effettivamente i
tag vengono bloccati!

ricevo spam....ma aspetto ancora un pò per affermare che funziona bene
Attenzione forse è qui che è nato l'equivoco...bloccare i tag html non
significa bloccare lo spam, che è altra cosa.


 significa bloccare lo spam, che è altra cosa.
mmm...nel mio caso (forse) posso dire che le due cose coincidono. Ti
riporto un esempio dei messaggi che mi arrivavano sul gb:
--------------------------------------------------------------------------------------
email: 
jaime...@msn.com
testo: Wonderful and informative web site.I used information from that
site its great.
<a href="http://
http://gmobi
******"></a> <a
href="http://
http://gmo
******"></a> <a
href="http://
http://c.1as
******"></a> <a
href="http://
http://c.1asph
******"></a> <a
href="http://
http://c.1asphost.com/mobilephones123/index12.html
"></a>
<a href="http://
http://gmobi
***********"></a> <a
href="http://
http://c.1asp
******"></a> <a
href="http://
http://c.1aspho
******"></a> <a
href="http://
http://gmobi
******/"></a> <a
href="http://
http://gmo
******"></a>
--------------------------------------------------------------------------------------
ho messo degli asterischi per non spammare a mia volta :-D
Come dicevamo...se blocco l'inserimento di tag blocco lo spam...o sono
fuori strada?

Mikk ha scritto:

decisamente fuori strada .. perchè se blocchi il tag html blocchi anche 
un semplice tag tipo <b>quanto sono bravo</b> ;)
-- 
SEZIONE RECUPERO LAVORO: Lancio di una nuova lavatrice sul mercato, due 
morti e sei feriti.


fuori strada?
sei fuori strada, perchè si può spammare anche senza inserire tag
html, anche se spesso chi spamma inserisce tag html.


 sei fuori strada,
andiam bene :-)
in generale, cosa mi consiglieresti quindi?

Mikk ha scritto:

in generale ti consiglierei di usare gli array .. cioč mi spiego (o 
almeno cerco di spiegarmi meglio) :)
Non discuto il tuo metodo di controllo dello spam (di questo mi astengo) 
ma discutevo il tuo modo di controllare eventuali tag .. nel tuo modo 
avresti dovuto avere tante condizioni quanti controlli avresti voluto .. 
mentre ti suggerisco di dare un'occhiata qui: 
http://it.php.net/manual/en/function.in-array.php
in questo modo ti crei l'array dei tag da controllare e con una sola 
condizione puoi effettuare il tuo controllo .. fermo restando quello che 
č stato detto fin'ora sullo spam .. ;)
-- 
SEZIONE PICCOLI ACCORGIMENTI: "Chiamami un tassě", mi disse prima di 
morire e sulla sua lapide ho scritto: "Qui riposa in pace Untassě".


ottimo....in effetti mi serviva una soluzione tampone per non tenere il
guestbook chiuso per troppo tempo.
Ora mi posso studiare gli array per bene e modificare lo script ad hoc!
grazie mille.....!!
sarebbe interessante però discutere dei vari metodi antispam (anche se
suppongo sia già ampiamente stato fatto ^_^)

Mikk ha scritto:

ti è stato passato il link da setec .. la nostra bibbia onnipresente ;)
-- 
!!! OFFERTA IRRIPETIBILE !!! Muori oggi avrai uno sconto del 50%


in generale, cosa mi consiglieresti quindi?
I problemi sono 2:
1) blocco tag html (inserimento tag html nei messaggi): se ritieni che
i caratteri < e > non vengano scritti nei normali messaggi, va
benissimo il contollo che hai fatto, altrimenti devi fare come ti ha
suggerito CapoBecchino
2) blocco spam (invio automatico di messaggi da parte di bot):
utilizza le tecniche suggerite negli altri interventi, ad esempio
l'immagine con il codice


ragazzi grazie a tutti. Siete stati davvero utili...!!!