Hi guys,

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?
> Dat zijn de enige 2 factoren waarvan ik geheel zeker ben dat er in dat geval een bot aan het werk moet zijn.
> 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

Bedoel je dat je de code wil zien?
Nee, gewoon een url van je "winkel/bedrijf/product"
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.
Aangezien niet elk formulier even uitgebreid of ingewikkeld is, zou je het dan zelfs nog kunnen timen. Dan weiger je bijvoorbeeld formulieren die meer dan 99,9% of meer dan 2 standaarddeviaties afwijken van de tijd die nodig was voor het invullen van eerder verwerkte formulieren van echte gebruikers.

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.
>> 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.

Reageren