Problemi di spam in dBlog? Ecco come aggiungere reCaptcha a dBlog
Di Muso (del 30/07/2012 @ 10:27:14, in Informatica, linkato 7118 volte)
Come capita piu' o meno a tutti, anche io sono stato vittima di spam, quindi vi scrivo questa breve guida per inserire nel vostro bel dBlog il reCaptcha. AVVISO che l'eliminazione dello spam NON e' IMMEDIATA!!! Suppongo per una questione di caching delle pagine sui server in giro per il mondo che permettono un accesso alle pagine con il vecchio codice. Cmq Tempo un mesetto e tutto si risolve.
File da modificare: - articolo.asp - commenti_invio.asp
in ordine dovrete sostituire in articolo.asp le seguenti righe (cioe' il form):
con il seguente form
mentre in commenti_invio.asp sostituire :
Dim SQLCommenti, RSCommenti, FIDA, FIDF, FIDFotografia, FIDArticolo, FCommento, FAutore, FLink, FTipologia, Errore, SQLControlloAutore, RSControlloAutore, ArrayParoleNonAmmesse, IArrayParoleNonAmmesse, ParolaNonAmmessaFiltrata, IParolaNonAmmessa, SQLCommentiTitoloRelativo, RSCommentiTitoloRelativo, TitoloRelativo
'Se i commenti sono abilitati eseguo l'invio If Abilita_Commenti Then
If Request.Form("campoNascosto") = "" Then
If CheckCAPTCHA(Trim(Request.Form("strCAPTCHA"))) Then
'Effettuo il controllo sul parametro id
con le seguenti, ricordandovi di inserire la VOSTRA private key nella riga recaptcha_private_key = "your_private_key" ' your private key
recaptcha_challenge_field = Request("recaptcha_challenge_field")
recaptcha_response_field = Request("recaptcha_response_field")
recaptcha_public_key = "6LegAcASAAAAADYH-RDuZqrp7QdFr_VXaFd8BWe6" ' your public key
recaptcha_private_key = "your_private_key" ' your private key
Dim SQLCommenti, RSCommenti, FIDA, FIDF, FIDFotografia, FIDArticolo, FCommento, FAutore, FLink, FTipologia, Errore, SQLControlloAutore, RSControlloAutore, ArrayParoleNonAmmesse, IArrayParoleNonAmmesse, ParolaNonAmmessaFiltrata, IParolaNonAmmessa, SQLCommentiTitoloRelativo, RSCommentiTitoloRelativo, TitoloRelativo, WordNotPermitted
'Se i commenti sono abilitati eseguo l'invio
If Abilita_Commenti Then
If Request.Form("campoNascosto") = "" Then
server_response = ""
newCaptcha = True
if (Request.Form("recaptcha_challenge_field") <> "" or Request.Form("recaptcha_response_field") <> "") then
Dim VarString
VarString = _
"privatekey=" & recaptcha_private_key & _
"&remoteip=" & Request.ServerVariables("REMOTE_ADDR") & _
"&challenge=" & Request.Form("recaptcha_challenge_field") & _
"&response=" & Request.Form("recaptcha_response_field")
Dim objXmlHttp
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
objXmlHttp.open "POST", "http://www.google.com/recaptcha/api/verify", False
objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXmlHttp.send VarString
Dim ResponseString
ResponseString = split(objXmlHttp.responseText, vblf)
Set objXmlHttp = Nothing
if ResponseString(0) = "true" then
'They answered correctly
server_response = ""
else
'They answered incorrectly
server_response = ResponseString(1)
end if
newCaptcha = False
end if
if server_response <> "" or newCaptcha then
if newCaptcha = False then
%>
If FIDA <> 0 OR FIDF <> 0 Then
FCommento = Replace(SostituisciCaratteri(Request.Form("Commento"), "No"), VbCrLf, " ")
If Len(Testo_Parole_NonAmmesse) > 0 AND Len(FCommento) > 0 Then
ArrayParoleNonAmmesse = Split(Testo_Parole_NonAmmesse, ",")
For IArrayParoleNonAmmesse = 0 To UBound(ArrayParoleNonAmmesse)
ParolaNonAmmessaFiltrata = ""
con
Dim foundCommento
Dim foundAutore
Dim foundLink
Dim foundIPas
Dim FIp
Errore = False
WorldNotPermitted = False
If FIDA <> 0 OR FIDF <> 0 Then
FCommento = Replace(SostituisciCaratteri(Request.Form("Commento"), "No"), VbCrLf, " ")
FAutore = SostituisciCaratteri(Request.Form("Autore"), "No")
FLink = SostituisciCaratteri(Request.Form("Link"), "No")
FTipologia = Request.Form("Tipologia")
FIp = Request.ServerVariables("REMOTE_ADDR")
If Len(Testo_Parole_NonAmmesse) > 0 AND Len(FCommento) > 0 Then
ArrayParoleNonAmmesse = Split(Testo_Parole_NonAmmesse, ",")
For IArrayParoleNonAmmesse = 0 To UBound(ArrayParoleNonAmmesse)
'START Add by muss 20120615
foundCommento = InStr(FCommento, ArrayParoleNonAmmesse(IArrayParoleNonAmmesse))
foundAutore = InStr(FAutore, ArrayParoleNonAmmesse(IArrayParoleNonAmmesse))
foundLink = InStr(FLink, ArrayParoleNonAmmesse(IArrayParoleNonAmmesse))
foundIP = InStr(FIp, ArrayParoleNonAmmesse(IArrayParoleNonAmmesse))
If (foundCommento <> 0) OR (foundAutore <> 0) OR (foundLink <> 0) OR (foundIP <> 0) Then
'If foundCommento = True Then
WorldNotPermitted = True
Errore = True
End If
'END by muss 20120615
ParolaNonAmmessaFiltrata = ""
Dopodiche' entrate come amministratori nel pannello di controllo di dBlog, andate nella sezione "Configurazione", dal menu' a tendina scegliete "Commenti".
A questo punto bisogna fare due modifiche, agli ultimi due campi in fondo:
- alla voce "Testo del campo Captcha anti-spam:" lasciare solo "Anti-Spam:" cancellando il resto
- alla voce "Errore campo Captcha numeri sbagliati" inserite una frase a piacere, Io ho inserito la seguente "le parole inserite in reCaptcha non sono corrette"
Qualche post da ip cinese lo riceverete ancora ma si tratta di un paio di post alla settimana (almeno nel mio caso).
Anche per questo ho aggiunto un controllo sulle parole ammesse anche nella firma e nell'IP che viene registrato, quindi se entrate come amministratori nella console alla voce commenti potete inserire un po' di parole o indirizzi ip che volete filtrare.
Se avete problemi contattatemi via mail, sono sempre presissimo e rischiate che passino giorni prima di ricevere una risposta a un commento inserito quì.
Ciao ho seguito tutti i passaggi descritti, ma dopo l'immagine del recaptcha non mi compare più niente... scompare il form e quant'altro. Sapresti dirmi qual'è il problema? Grazie
Ciao, sono contento che tu abbia seguito questa piccola guida, non posso rispondere alla tua domanda senza aver prima visto la pagina modificata. Mandami il sorgente che hai modificato per mail e saro' lieto di aiutarti.
ciao, intanto grazie per la guida, ho una domanda, quando scrivi "ricordandovi di inserire la VOSTRA private key nella riga" cosa intendi per private key ? Inoltre, io la riga che tu citi, "recaptcha_private_key" non la trovo.
buongiorno, sto provando anche io a modificare il mio dblog invaso dallo spam. @Claudio: quella riga si trova nel filo commenti_invio.asp @musoweb: ho lo stesso problema di Jacopo, sarebbe bello avere la pagina completa (o verificare perchè si genera questo errore). GRAZIE MILLE per l'articolo
Ciao a tutti, @Jacopo,@Claudio,@Ruggieo mi spiace ma ci doveva essere un errore nel post, ho corretto postando questa nuova guida. Nel caso abbiate un problema mandatemi una mail con la pagina che vi dà errore.