Het is je misschien opgevallen dat we op Tweakers.net de laatste tijd nogal vaak over datalekken schrijven. Recent behandelden we nog beveiligingsproblemen op de websites van het Spoorwegmuseum, een aantal supermarkten, Kluwer en Tivoli. De genoemde beveiligingslekken hebben één ding gemeen: ze zijn allemaal veroorzaakt door sql-injectie.
Sql-injectie is een van de aanvalsmethoden die een hacker kan gebruiken als gebruikersinvoer op een website niet met voldoende zorg wordt behandeld. Ook cross site scripting wordt daardoor veroorzaakt. Deze problemen zijn al jaren bekend, maar toch blijken er keer op keer websites kwetsbaar voor te zijn.
Dat het een groot probleem is, blijkt ook uit de top-10 van beveiligingsrisico's die het Open Web Application Security Project opstelde. Injecties, waaronder die van sql, staan op de eerste plaats.
Veel ontwikkelaars lijken dus niet of niet goed genoeg te weten wat sql-injectie is en hoe het kan worden voorkomen. Vandaar dat we het in dit artikel nog één keer uitleggen: wat zijn deze problemen, hoe worden ze veroorzaakt en hoe kunnen ze worden voorkomen?
We richten ons in dit artikel vooral op de talen PHP en MySQL, hoewel het probleem ook bij andere programmeertalen en databasesoftware speelt. PHP en MySQL treffen we echter het meest aan bij datalekken waarbij sql-injectie een rol speelt.
Bron: XKCD.