4 redenen waarom je botverkeer op jouw website moet vermijden
Waarom vormt het posten van ongewenst materiaal door bots in formulieren op websites een probleem?
Op het eerste gezicht lijkt het posten van ongewenst materiaal op de formulieren van je website misschien een onschuldig probleem. Toch mag de impact van dit fenomeen niet onderschat worden.
Je kunt je voorstellen dat de eigenaar van een website contactverzoeken die duidelijk niet van echte, oprechte mensen komen, gewoon negeert of zelfs verwijdert. In zo'n eenvoudig scenario is dit inderdaad correct. Het probleem ontstaat echter wanneer er op een interactievere manier wordt omgegaan met de data die geüpload wordt door de bezoekers van de website en wat er precies toegelaten wordt om geüpload te worden.
Hedendaagse moderne websites hebben vaak verschillende manieren waarop gebruikers gegevens kunnen uploaden naar de database van een website. Het is niet langer beperkt tot slechts één contactformulier, maar kan variëren van openbare blogs tot medische afspraakformulieren, overheidsformulieren, sollicitaties en feedback- en klachtenformulieren.
Waarom gebeurt dit?
Laat ons beginnen met een kijkje te nemen naar enkele van de hoofdredenen waarom bepaalde mensen of instanties deze technologieën ontwikkelen.
1. Reclame & promotie
De belangrijkste reden om massaal content te uploaden op verschillende websites is voor promotie van producten, diensten en ongewenste reclame. Deze irrelevante content hoopt aandacht te trekken van website-eigenaren, moderators en gebruikers. Dit gebeurt op grote schaal, soms zelfs door criminele organisaties die hun botnet gebruiken als een betaalde dienst om grotere bedrijven of individuen te promoten.
2. Poging tot phishing
Phishing is het nabootsen van websites of services om kwaadwillige activiteiten uit te voeren met verzamelde gegevens. Deze technieken worden op verschillende manieren toegepast, zoals het uploaden van misbruikmakende formulieren of scripts die op de website verschijnen als valse inlogpagina's, redirects naar phishing-websites, of schadelijke links in advertenties. Ook kunnen geüploade scripts toetsaanslagen registreren en wachtwoorden ontcijferen.
3. SEO Manipulatie
Een reden om bots massaal op websiteformulieren los te laten, is om SEO te manipuleren. Keyword-stuffing is het massaal plaatsen van links naar andere websites, artikelen of blogs. De content achter deze links is vaak van lage kwaliteit, irrelevant of bevat ongepast materiaal. Hetzelfde geldt voor het posten van irrelevante zoekwoorden of fout gestructureerde HTML-content. Dit heeft als doel de SEO-score te verlagen en de verkeer naar concurrerende websites te verminderen.
4. Denial-of-service (DOS) attacks
Een Denial of Service (DoS) aanval is het overbelasten van een webserver door overmatige formulierindiening op een website. Hoewel hackers dit vaak doen om hun programmeervaardigheden te tonen, kan dit ernstige gevolgen hebben. Bijvoorbeeld, tijdens speciale acties of promoties kunnen webshops het doelwit worden van een DoS-aanval door concurrenten die klanten willen weglokken. Niemand wil echter cadeaus kopen op een trage of onbruikbare website. Andere redenen waarom iemand het doelwit van een DoS-aanval kan zijn, zijn ideologische motieven van activistengroepen of financieel gewin door afpersers.
Op het eerste gezicht lijkt de impact van deze geautomatiseerde opdrachten misschien beperkt. Echter, wanneer je bedenkt dat deze bots op grote schaal opereren, wordt duidelijk dat de totale impact aanzienlijk kan zijn.
Wat kun je er aan doen?
Zoals je wellicht ziet is het niet onbelangrijk om stil te staan bij de mogelijke risico's die je loopt wanneer je je formulieren niet beschermt. Gelukkig bestaan er inmiddels verschillende technieken om dit probleem tegen te gaan. Laat ons deze technieken van nader bij bekijken.
1. Form validation en sanitization
Bij elk ingediend formulier, kan gevalideerd worden of dit formulier ongeldige tekens of te lange of te korte teksten bevat. Door deze validatie weten we dat dit formulier wellicht niet op een natuurlijke manier ingevuld werd. De tweede stap bestaat dan uit het detecteren en verwijderen van eventuele schadelijke inhoud zoals SQL, HTML of javascript code. Op deze manier kan je aanvallen zoals SQL-injectie of cross-site scripting (XSS) aanvallen tegen gegaan.
2. Honeypot field
Een tweede eenvoudige techniek om bots tegen te gaan is door het toevoegen van een honeypot field. Een formulier bestaat doorgaans uit structurele HTML elementen, met daarop CSS toegepast. Dit honeypot veld is een veld in het formulier dat door middel van CSS onzichtbaar gemaakt wordt. Het is dus wel aanwezig maar voor gewone gebruikers onzichtbaar. Je verwacht dan ook dat mensen zonder verkeerde bedoelingen dit veld niet gaan invullen. Deze informatie kun je dan vervolgens gaan gebruiken om te evalueren of een echte gebruiker het formulier invulde. Bots gaan, net zoals bijen op honing afgaan, alle structurele HTML velden gaan invullen die in het document te vinden zijn, onafhankelijk van de toegepaste CSS. Indien een formulier ingediend wordt met dat verborgen veld ingevuld, dan kun je er eventueel voor kiezen dit bericht te gaan negeren.
3. Time-based submissions
Een derde eenvoudige techniek om toe te passen zijn time-based submissions. Het is je wellicht al opgevallen dat vele applicaties je niet oneindig vele malen toelaten om login pogingen te doen. Deze techniek leunt hier sterk bij aan en bestaat uit twee delen. Door middel van sessie-identificatie tussen je browser en de webserver kan geïdentificeerd worden of eenzelfde gebruiker onnatuurlijk snel achter elkaar formulieren invult. Indien dit gebeurt kunnen we deze gebruiker als bot aanzien en blacklisten. Ten tweede kunnen we ook een timestamp bijhouden met het tijdstip waarop de pagina met het formulier werd aangevraagd. Wanneer het formulier dan gepost wordt kunnen we kijken hoe lang de gebruiker nodig had om dit formulier in te vullen, en indien dit te snel gebeurde, kunnen we deze gebruiker ook als bot markeren.
4. Captcha
Wellicht de bekendste en ook krachtigste vorm van bescherming tegen bots is de captcha-technologie. Captcha staat voor "completely automated public Turing test to tell computers and humans apart". De eerste versie van captcha kun je herkennen aan het sterk vervormde kader met daarin een willekeurig woord dat bestaat uit hoofdletters en kleine letters. Alleen als je het volledige woord correct kunt uitschrijven, word je geaccepteerd als een legitieme gebruiker. Dit woord is eigenlijk een afbeelding, dus er valt geen tekst scriptmatig te evalueren.
Wanneer je deze puzzel oplost, zal de potentiële oplossing server-side worden gevalideerd, waarna er acties kunnen worden ondernomen, zoals bijvoorbeeld het verzenden van het formulier. De puzzel zelf kan zowel server-side als client-side worden gegenereerd. Hoewel het captcha-principe al sterk is uitgebouwd tot reCaptcha v1, v2 en v3, wordt captcha zelf niet vaak meer gebruikt. Dit komt doordat het tegenwoordig vrij gemakkelijk te omzeilen is en het alleen maar rekening houdt met een geldige tekstuele oplossing voor de puzzel.
ReCaptcha is de opvolger van captcha en tevens ontwikkeld door Google. ReCaptcha kan worden herkend aan de complexere puzzels, zoals het selecteren van vakjes met verkeerslichten. Over het algemeen zijn de puzzels complexer en worden er meer handelingen gevraagd, maar nu wordt er ook rekening gehouden met het gedrag van de gebruiker tijdens het oplossen van de puzzel. Muisgedrag, klikgedrag, snelheid en browsereigenschappen worden geëvalueerd aan de hand van een kunstmatig getraind model om onderscheid te maken tussen mensen en robots. Uiteindelijk zijn er ook nog reCaptcha v2, waarbij de puzzels werden vervangen door een checkbox. Dit is gedaan omdat veel mensen de puzzels als vervelend ervaren, en de algoritmen die het gebruikersgedrag op de website analyseren, krachtig genoeg zijn om robots van mensen te onderscheiden. Uiteindelijk hebben we nu captcha v3, die helemaal niets meer weergeeft in de browser en al het gebruikersgedrag op de achtergrond volgt om het bij het verzenden van het formulier te evalueren.
5. User behavior analysis, machine learning en AI
Hoewel dit principe sterk aansluit bij captcha, is dat niet de enige vorm van artificiele intelligentie die kan worden ingezet. AI is tegenwoordig een hot topic en kan worden ingezet voor verschillende redenen waaronder form validation. Er bestaan reeds krachtige en uitvoerig getrainde modellen die in staat zijn te onderscheiden of een gebruiker een formulier invult of als dit door een robot gebeurt. Er wordt dan verschillende informatie gecapteerd tijdens het invullen van het formulier zoals muisverplaatsing, volgorde van invullen van velden, muissnelheid, kliksnelheid en nog veel meer. Aan de hand van vele voorbeelden van door bots, als door mens ingevulde formulieren kan onderscheden worden als dit door een mens of een robot ingevuld werd. Wanneer je denkt dat deze technologie aangeboden kan worden als service of API dan wordt het echt interessant. Helaas komt dit ook met het grote nadeel dat dergelijke technologieën al iets gevorderd zijn, vaak geld kosten en de hedendaagse bots ook met dergelijke technologie uitgerust kunnen zijn en steeds beter mensen zullen nabootsen.
Slot
Om bots op formulieren tegen te gaan, bestaan er verschillende technieken die variëren in hun mate van effectiviteit. Sommige technieken zijn eenvoudig te omzeilen, terwijl andere complex en bijna ondoordringbaar zijn. Op het eerste gezicht lijkt het beveiligen van een formulier misschien niet noodzakelijk, omdat bots op het eerste gezicht geen schade lijken aan te richten als ze worden doorgelaten. Toch is het belangrijk om formulieren te beschermen, zelfs als ze een triviale functie lijken te hebben. Bots zijn tegenwoordig een veelvoorkomend en hinderlijk fenomeen dat massaal optreedt. Het is belangrijk om te beseffen dat bots aanzienlijke schade kunnen aanrichten, zeker wanneer dit gaat over formulieren die discretie vereisen. Daarom is het raadzaam om verschillende technieken in combinatie te implementeren, afhankelijk van de specifieke vereisten van jouw situatie.
Wil je graag de mogelijkheden bekijken om jouw website te beveiligen? Neem dan contact met ons op.