• Moderatore

    Antispam con javascript

    Ciao a tutti

    sto per mettere in linea un form per contattarmi, dove l'utente dovrà inserire nome, indirizzo mail e commento.

    Se, però, lascio solo questi campi, verrò invaso dallo spam; quindi devo utilizzare uno script antispam.:rambo1:

    Il fatto è che non posso usare ne php ne asp 😛

    L'alternativa è usare javascript, che malgrado la minor sicurezza mi può comunque ridurre di molto la mole di spam; oltretutto l?indirizzo e-mail non lo metto in chiaro.

    Pensavo di aggiungere un altro campo dove dovrà essere inserita la password che indicherò con un?immagine gif...

    Siccome non ho trovato nulla in internet, di come fare una cosa del genere, mi chiedevo se qualcuno potesse darmi una dritta; da profano, non mi sembra una cosa difficile, ma forse sbaglio...:?

    In alternativa qualcuno sa indicarmi altre strade?

    Grazie


  • Super User

    Ciao 🙂

    Il form è processato da uno script lato server, necessariamente.
    Perchè è il server che invia fisicamente la mail.

    Una volta individuato l'url dello script (php, cgi, asp, quello che sia) che processa l'invio, possono inviarti spam bypassando javascript.

    La verifica finale del valore di controllo deve sempre e comunque essere effettuata lato server.


  • Moderatore

    Ciao

    Il form è processato da uno script lato server, necessariamente.
    Perchè è il server che invia fisicamente la mail.

    e infatti il form sta su una pagina php.

    Ma siccome non posso usare i captcha, che faccio?

    Faccio inserire una password conosciuta dall'utente (sempre la solita indicata nella pagina del form stesso) gestita con lo javascript...
    il fatto è che ho trovato script che proteggono il passaggio da una pagina all'altra ma non che proteggono la pagina stessa.

    una cosa del tipo:
    se inserisci la giusta password proseguo con l'invio dell'email, altrimenti no.


  • User

    @claudioweb said:

    Ciao 🙂

    Il form è processato da uno script lato server, necessariamente.
    Perchè è il server che invia fisicamente la mail.
    Non obbligatoriamente può anche appoggiarsi al client di posta del utente (eudora outlook etc..) in questo caso l'utente dovrà confermare l'invio

    Una volta individuato l'url dello script (php, cgi, asp, quello che sia) che processa l'invio, possono inviarti spam bypassando javascript.[LEFT]Che sappia io non è cosi che funzionano i bot (metodi automatici che inviano spam), se intendi un metodo manuale puoi compilare direttamente il form, e dello script cosa tene fai?[/LEFT]

    La verifica finale del valore di controllo deve sempre e comunque essere effettuata lato server.Diciamo che è molto consigliato, e sicuramente più sicuro di qualsiasi altro metodo.
    @lazzo85 potresti usare script:

    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
    <script type="text/javascript">
    function Causale(){
    var alfabeto='QwERTyUIOPaSDFgHJkLZXCVbNm';
    var num = '1234567890';
    var indice=0;
    var stringacasuale = '';
    for (var i=0; i<4; i++){
    var Numeri = Math.floor(num.length * Math.random());
    indice=Math.floor(alfabeto.length*Math.random());
    var codice = Math.random(stringacasuale+=alfabeto.charAt(indice)+Numeri);
    document.getElementById("cod").innerHTML = stringacasuale;
    }}
    
    function ControllaCod(){
    var control = document.getElementById("codice").value
    var AntiSpam = document.getElementById("cod").innerHTML
    if(AntiSpam != control){
    alert("inseriscri il codice antispam corretto rispettando MAIUSCOLE e minuscole");
    Causale();
    return false;
    }}
    </script>
    </head>
    <body onload="Causale();">
    <form action="prova1.asp" method="get" onsubmit="return ControllaCod();">
    <div id="cod"></div><input id="codice" name="codice" type="text" /><input name="Invia" type="submit" />
    </form>
    </body>
    </html>
    
    

  • Super User

    @andyweb said:

    Non obbligatoriamente può anche appoggiarsi al client di posta del utente (eudora outlook etc..) in questo caso l'utente dovrà confermare l'invio
    Certo, ma in questo caso basta codificare il semplice link mailto.
    Ma un form per una maggior accessibilità deve fare tutto da solo senza dover sperare in un client di posta correttamente configurato.

    @andyweb said:

    Che sappia io non è cosi che funzionano i bot (metodi automatici che inviano spam), se intendi un metodo manuale puoi compilare direttamente il form, e dello script cosa tene fai?
    Ho verificato personalmente che in alcuni casi puoi anche eliminare la pagina contenente il form e lasciare il solo script che gestisce l'invio delle email.
    Continui a ricevere spam, seppur il form non c'è più.
    Semplicemente perchè il form lo simulano loro. Dopo aver individuato l'url che esegue l'action nemmeno lo controllano più il form.
    Tra l'altro i migliori bot, scandagliano in automatico le pagine, individuano ed inviano eventuali campi nascosti, leggono i captcha fatti male, e soprattutto non eseguono javascript.

    Se invece si tratta semplicemente di "memorizzatori di mouse e tastiera" che simulano l'invio sul browser solo in quel caso javascript potrebbe essere utile. Ma penso che anche il quel caso uno spammer furbo disattiverebbe javascript.
    Insomma imho è inutile, se non nei casi di spammer mediocri.

    :ciauz:


  • Moderatore

    @claudioweb said:

    Ma un form per una maggior accessibilità deve fare tutto da solo senza dover sperare in un client di posta correttamente configurato.

    Sono d?accordo

    Lo script indicato da Andyweb è ?graficamente? quello che avevo in mente ma ha un problema:

    @claudioweb said:

    i migliori bot, scandagliano in automatico le pagine, individuano ed inviano eventuali campi nascosti, leggono i captcha fatti male, e soprattutto non eseguono javascript

    Gli spambot usano scansioni OCR e sono quindi in grado di rilevare e capire la password creata ogni volta.

    Per questo pensavo ad una password fissa: se la inseriamo in uno javascript e in una gif (opportunamente cammuffata) gli spambot non saranno in grado di rilevarla.