Lootjes trekken en Cross Side Scripting

  • ± 1 minuut

Lootjes trekken en Cross Side Scripting hebben natuurlijk niets met elkaar te maken, totdat je het proces van lootjes trekken gaat digitaliseren, zoals lootjestrekken.nl heeft gedaan.

Lootjestrekken.nl kan gebruikt worden om online lootjes in te leveren, waarna de lootjes door het systeem verdeeld worden over de ingevoerde gebruikers. Handig wanneer je cadeau's voor elkaar wilt kopen, maar niet in de gelegenheid bent om samen te komen om zelf lootjes te trekken.

De privacy en voorwaarden verklaring van lootjestrekken.nl meldt verder dat de website zorgvuldig ontwikkeld en beveiligd is. Of het bewust is of niet, het laatste was tot voor kort niet geheel waar. Gebruikers hadden binnen hun eigen groep de mogelijkheid om berichten te plaatsen in de vorm van een chat. De gouden regel "never trust user input" was hierbij volkomen genegeerd en als gebruiker kon je met behulp van html je opmerkingen groter maken of een andere kleur meegeven. Je kon zelfs meer, lootjestrekken.nl gaf je de mogelijkheid om een heel JavaScript library in te lezen en dus nam ik de proef op de som.

Een overzichtsbestand op Lootjestrekken.nl ziet er zo uit. Met behulp van een JavaScript library als jQuery is het kinderspel om uit dit document de gegevens te onttrekken om te achterhalen wie wie heeft:

          if ( $("a:contains('mijn getrokken lootje')").length > 0 )  {               var sName=$("h2:contains('Overzicht')").text().split('Overzicht van ')[1];               var sGetrokken=$("a:contains('mijn getrokken lootje')").text().replace(')','')                      .split('mijn getrokken lootje (')[1];               alert( sName + ' heeft ' + sGetrokken);      }

Wanneer deze code ingevoerd werd (zonder de enterregels) zou deze code bij elke gebruiker in de groep uitgevoerd worden. Iedereen krijgt dan een JavaScript melding met wie hij heeft. De volgende stap, om de gegevens door te mailen of op te slaan, is vervolgens eenvoudig te bedenken. Er kan gebruik worden gemaakt van Ajax (met behulp van de jQuery framework) om de gegevens als post of get door te sturen naar een php-pagina, welke de gegevens op zijn beurt opslaat of doormailt, of een redirect naar een pagina met behulp van window.location. Op deze manier kon van de hele groep achterhaald worden wie wie heeft.

Een reactie op de vraag of het een bewuste keuze was om user input op geen enkele wijze te valideren, bleef uit. Na de tip heeft Lootjestrekken.nl het lek echter wel gedicht.