Bot voor de gek houden?
Inmiddels heb ik al wat voorbereidingen getroffen om het een spambot lastig te maken.
Maar nu vraag ik me af ... als ik merk dat er iets niet in de haak is, ofwel dat er vermoedelijk een spambot aan het werk is ... wat is dan mijn volgende move?
Simpel voorbeeld. In het formulier stuur ik via een hidden field een token "ABC" mee en die token sla ik ook op in de sessie. Vervolgens wordt het formulier gepost en blijkt het token "XYZ" te zijn. Hé, dat klopt dus niet ... maar wat doen we nu?
Wat verwacht die bot? Stel ik stuur een 404 of een 503 header, weet die bot dan dat er iets is misgegaan en gaat ie het vervolgens nog een keer proberen?
Laat ik de vraag anders stellen ... wat wordt mijn actie als ik merk dat er een bot actief is. Doe ik een 'exit', stuur ik 'm naar de homepage? Of stuur ik 'm simpelweg naar de 'bedankt voor je bericht' pagina alsof er niks aan de hand is?
Wat is wijsheid?
Gewijzigd op 18/09/2016 17:13:32 door Ozzie PHP
Gewoon reageren zoals je normaal ook zou doen lijkt me het verstandigst. Dus bij een contactformulier een normaal "bedankt voor uw bericht" of wat je daar normaal ook gebruikt. Niet wijzer maken dan strikt noodzakelijk.
Oké, thanks!
Het zal niet prettig zijn als ik jou een mail stuur, dan een bedankt bericht krijgt alsof ie succesvol is verstuurd, en 3 dagen heb ik nog geen reactie.
Ik zal zelf bij verdacht gedrag een Captcha weergeven zoals ik al eerder zei. Zo val je een gebruiker in 99% van de gevallen daar niet mee lastig, maar die ene procent moet dan iets meer moeite doen, maar je sluit ze niet gelijk buiten.
Dat klopt Michael. Ik zal niet in alle gevallen doorsturen naar de 'bedankt' pagina. Maar op het moment dat de token niet klopt, kun je er toch wel vanuit gaan dat iemand de boel probeert te belazeren.
Of tussendoor even is gaan lunchen en zijn session heeft laten verlopen
Gewijzigd op 19/09/2016 00:24:50 door Ozzie PHP
Wanneer kunnen we kijken? We zijn hartstikke benieuwd naar je product!
Bedoel je dat je de code wil zien?
Ik zou iemand (of dit nu een bot is of niet) gewoon weer afleveren bij het vooringevulde formulier met een boodschap dat er iets is misgegaan, dat de persoon zijn/haar gegevens nogmaals moet controleren en als het probleem aanhoudt dat deze op een of andere manier contact op kan nemen (via het contactformulier lol).
Maar maak vooral duidelijk wat er fout ging en hoe dit opgelost kan worden.
De meeste bots zijn volgens mij redelijk dom en ook niet toegespitst specifiek op jouw formulier.
Dat hoop ik dan inderdaad maar ;-)
Thanks voor de tip. Ik stuur nu alleen nog direct door naar de bedankt pagina als het formulier té snel wordt ingevuld of als er tussentijds iets is veranderd in de useragent. Dat zijn de enige 2 factoren waarvan ik geheel zeker ben dat er in dat geval een bot aan het werk moet zijn. In alle andere gevallen krijgen ze gewoon weer het contactformulier te zien.
> als het formulier té snel wordt ingevuld
Wat is te snel? Wat als iemand gebruik maakt van autocomplete? En ontwerp jij je formulieren zodat deze veel (of in ieder geval "genoeg", wat dat ook moge zijn) tijd kosten om in te vullen? :p
Ik heb het zo gemaakt dat als ze voor het eerst het formulier invullen, dit langer moet duren dan (meen uit m'n hoofd) 8 of 9 seconden. Ik heb dat zelf een aantal keer getest en ik krijg het zelf niet binnen die tijd voor elkaar ... zelfs terwijl ik precies weet wat ik moet invullen. Dus als iemand binnen die tijd het formulier invult is er echt iets niet in de haak.
Ozzie PHP op 19/09/2016 13:44:57:
Nee, gewoon een url van je "winkel/bedrijf/product"Bedoel je dat je de code wil zien?
Sorry beetje late reactie, was even niet in de buurt.
Thomas van den Heuvel op 20/09/2016 14:52:35:
Wat is te snel? Wat als iemand gebruik maakt van autocomplete?
Zelfs als je autocomplete gebruikt is het wel fijn om niet als een dolle op de submitknop te rammen, maar eerst te kijken naar (a) wat voor formulier je invult, en (b) of autocomplete wel de juiste gegevens heeft ingevuld. Dat zou minimaal wel een aantal seconden moeten kosten.
Wat ik zelf overigens altijd doe, is níét automatisch een afschrift van een contactformulier naar de "afzender" mailen. Dat voorkomt de ergste vorm van spam: een spammer die het contactformulier misbruikt om spam — uit jouw naam met jouw afzenderadres vanaf jouw server — naar een ongelukkige derde te mailen.
Goeie. Daar had ik nog niet aan gedacht aan die vorm van misbruik. Daar ga ik ook nog eens even wat extra maatregelen voor treffen.