Stop auto form spammers

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Hi,

    Voor een klant moest ik een oplossing zoeken vanwege automatische spambots die zijn mail plat gooide met meer dan 500 mails per dag.
    Hiervoor hadden we een captcha in gedachte maar dat bleek niet helemaal effectief te werken, nu schoot me iets binnen, iets heel kleins maar het werkt enorm goed!
    Uiteraard werkt de captcha nog wel voor de form spammers die het handmatig uitvoeren, captcha is dus niet een overbodige luxe.

    HTML Code:

    Source Code

    1. <form method="post" action="send.php">
    2. <ol>
    3. <li>
    4. <label for="name">Name</label>
    5. <input type="text" name="name" value="">
    6. </li>
    7. <li>
    8. <label for="email">Email</label>
    9. <input type="text" name="email">
    10. </li>
    11. <li id="user">
    12. <label for="username">Username</label>
    13. <input type="text" name="username">
    14. </li>
    15. <li>
    16. <input type="submit" name="submit" value="Send It!">
    17. </li>
    18. </ol>
    19. </form>
    Laat alles zien


    Zoals je kan zien heb ik voor de li "user" een ID gegeven, deze ID heeft een CSS element display:none; hierdoor is dat gedeelte niet zichtbaar.
    Een spambot pakt normaal gesproken alles tussen de <form> en </form> welke dan alle velden uitvoert, hierdoor kan de spambot alles random invoeren.
    Een gebruiker ziet het veld niet, dus met alle verwachtingen wordt dat veld door een gebruiker niet ingevoerd, dit betekend dat de bot niet ziet welke wel echt is en welke niet.

    PHP Source Code

    1. if( !isset($_POST['name'])) { die("No Direct Access"); } // Make sure the form has actually been submitted
    2. $name = $_POST['name'];
    3. $email = $_POST['email'];
    4. $spam = $_POST['username']; // This is our hidden field
    5. if($spam) {
    6. die("No spamming allowed bitch!");
    7. } else {
    8. // Process the form like normal
    9. }
    Laat alles zien


    Wanneer de "username" field uitgevoerd wordt kan je er 100% vanuit gaan dat het om een spambot gaat, en dus kan je zijn actie voortijdig afbreken.
    Hierbij wordt de spammer dus eruit gehaald, mijn klant heeft momenteel 0,00 spam berichten ontvangen, het werkt dus echt!
    Let wel op dat een captcha wel slim blijft om te gebruiken, je hebt nog altijd bezoekers die F5 kunnen rammen na het invoeren van een form, de captcha reset alles weer waardoor hij continu de captcha moet invoeren.


    Hou er wel rekening mee dat dit alleen met de grote spambots werkt, de kleine spambots die op jou form gemaakt worden zullen het veld negeren en werkt het voor als nog niet.
    Maar ik vond dit wel een hele simpele oplossing en wilde deze graag met jullie delen zodat ook jullie een simpele maar effectieve manier hebben om spambots te blokkeren.

    1,342x gelezen

Reacties 8

  • WHMCSAddons -

    @Jeroen.G
    Hoe bedoel je precies met SEO statistieken, het veld dient gewoon niet ingevuld te zijn.

    @Kevinkrs
    Daarom had ik erbij geplaatst dat het voor een op maat gemaakt form niet zal werken, de grotere spambots kijken voornamelijk tussen de <form> en </form> elementen die zien dit trucje dus niet ;)

  • kevinkrs -

    Hmm en wat nu dat een spambot geschreven is om bepaalde velden te negeren? Een beetje programmeur kan zo een bepaald aantal velden pakken en een aantal overslaan. Wel een geweldig idee trouwens.

  • Jeroen.G -

    een leuke en slimme manier ga ik zeker vaker gebruiken!

    Maar dit is wel slecht voor je seo statistieken want bijvoorbeeld google accepteert dit niet als ze dit handmatig vinden.

  • WHMCSAddons -

    Bedankt voor alle reacties, zal in de toekomst nog iets beters verzinnen, zodra ik dit weet horen jullie meer.

  • Dennii -

    Werkt 100%

  • Willem -

    Erg duidelijk en handig, en bovendien werkt het ook nog goed.

  • K.Rens -

    Goed geschreven, heel duidelijk en werkt goed.
    Bedankt!

  • strafeness1 -

    Erg handige manier om spammers te voorkomen. Bedankt!