Optimaliseer je database voor een nog snellere website!

Net zoals een auto heeft ook een website onderhoud nodig. Zo zorg je ervoor dat je website snel en veilig blijft werken. Naast het up-to-date houden en het configureren van caching, is database-optimalisatie erg waardevol. In het bijzonder voor grotere en complexere websites. Graag geef ik je tips hoe je dat het beste kunt aanpakken!

Maak je website nog sneller met behulp van database-optimalisatie!

Verder lezen

Weerbaarder tegen cybercriminaliteit met de checkfunctie van de politie!

De politie heeft een online database beschikbaar gesteld, gevuld met informatie die ze hebben verzameld bij het oprollen van ‘botnets’. Onder botnets verstaan we malafide netwerken die bestaan uit gehackte en kwetsbare computers. Via de checkfunctie van de politie kun je controleren of je eigen e-mailadres hierin voorkomt. Erg handig als je wilt weten of je inloggegevens in verkeerde handen zijn gevallen!

Weerbaarder tegen cybercriminaliteit met de checkfunctie op politie.nl!

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