Wat is de Jamstack en hoe werkt het?

De snelheid van je website heeft aantoonbaar invloed op het aantal conversies dat je behaalt. Probeer je jouw website te versnellen door puur statische HTML-bestanden te gebruiken, dan leverde je voorheen veel functionaliteit in. Inmiddels kun je echter veel technieken inzetten om het beste van beide werelden te krijgen. Laten we eens kijken naar de nadelen van dynamische websites en de Jamstack als alternatief.

Wat is de Jamstack en hoe werkt het?

Verder lezen

Smart Index Creator: hoe wij stiekem je database sneller maken!

Regelmatig vertellen we je over onze ontwikkelingen via e-mail of blogartikelen, maar niet alles komt ter sprake. Ik denk dat dit vaak komt, doordat wij het vanzelfsprekend vinden ons volledig in te zetten voor een zo goed mogelijke klantbeleving. Het is onze tweede natuur, het zit in ons DNA. Vandaar dat het me een leuk idee lijkt om eens wat te vertellen over een tool die al jaren bij ons op de achtergrond draait, we weinig omkijken naar hebben, maar heel veel moois voor je website en database brengt: de ‘Smart Index Creator’!

Smart Index Creator: hoe wij stiekem je database sneller maken!

Verder lezen

Het grote boze internet, deel 1: SQL-injectie

SQL-injecties: hoe kun je het voorkomen?Het is weer tijd voor een echt technisch artikel, dit keer bedoeld voor mensen die zelf scripts en applicaties schrijven in PHP. Vandaag ga ik het hebben over gevaren die je als PHP-programmeur kunt verwachten: veelvoorkomende fouten in PHP-code die kwaadwillenden kunnen misbruiken.

PHP staat bekend als een taal is die relatief vriendelijk is voor beginners. Helaas komt bij veilig programmeren in PHP, en het veilig schrijven van veilige webapplicaties in het algemeen, heel wat kijken. Vandaar dat dit artikel is opgedeeld in twee delen. Om maar meteen te beginnen, de SQL-injectie.

SQL-injectie

SQL-injectie is een techniek die vaak gebruikt wordt tegen kleinere sites. Zelfgebouwde reactiesystemen, gastenboeken en inlogformulieren zijn net zo vaak, of zelfs vaker, doelwit als grote banken en andere instellingen. De techniek draait om het invoegen (injecteren) van commando’s op plekken waar dit niet wordt verwacht. In velden waar je normaal je naam of bericht zou invoeren, vullen kwaadwillenden delen van SQL-queries in, in de hoop dat het systeem aan de andere kant van het formulier zo ingesteld is dat het de queries ‘blind’ gaat uitvoeren. Dat komt helaas vaker voor dan dat je zou denken.

SQL-injectie is misschien het beste te illustreren met een voorbeeld. Stel je eens voor dat een zuivelmerk een toetje op de markt zou brengen met de wat aparte, maar wel heel catchy naam “Yoghurt en een Gouden Ferrari.” Eenmaal in de supermarkt aangekomen bedenk je dat je wel zin hebt in wat nieuws na het eten, en vraagt dus:

Ik wil graag een pak Yoghurt en een Gouden Ferrari.

De meeste supermarktmedewerkers zouden een pak van die yoghurt-met-de-rare-naam van de schappen halen, of misschien een gewoon pak yoghurt. Misschien zouden ze zelfs hun hoofd schudden bij het verzoek – gouden Ferrari’s? In een buurtsuper? Gezond verstand zorgt er in ieder geval voor dat je niet per ongeluk met een sportwagen thuiskomt.

Computerprogramma’s hebben natuurlijk geen gezond verstand. Databases maken geen onderscheid tussen een heel normaal verzoek, zoals een query die het lidnummer van Fred opvraagt…

SELECT lidnr FROM leden WHERE naam='Fred'

…en deze query, die helemaal geen lidnummer maar de wachtwoorden van alle gebruikers opvraagt:

SELECT lidnr FROM leden WHERE naam='Fred' AND 1=0 UNION ALL
SELECT Password FROM mysql.user WHERE Password != ""; -- '

Kortom, SQL-injectie is dus het plaatsen van commando’s op plekken waar eigenlijk alleen data hoort. Door de invoer goed te kiezen is vaak veel schade toe te richten. Zelfs grote sites als Yahoo, The Pirate Bay en Sony hebben inbraken gehad waarbij de techniek gebruikt werd – en dat terwijl je script verdedigen tegen SQL-injectie in principe niet ingewikkeld is.

SQL-injecties: database inputs

Bron: Randall Munroe, xkcd.com

Verder lezen