SQL Injection
Wat is het?
SQL-injectie is een code-injectie-aanval waarbij kwaadaardige SQL-statements worden ingevoegd in invoervelden, waardoor aanvallers mogelijk databasedata kunnen lezen, wijzigen of verwijderen, authenticatie kunnen omzeilen, of zelfs systeemcommando's kunnen uitvoeren. Het exploiteert applicaties die gebruikersinvoer direct concateneren in SQL-queries in plaats van geparametriseerde queries of prepared statements te gebruiken.
Praktisch voorbeeld
Een kwetsbaar loginformulier zou een query kunnen bouwen door strings te concateneren: SELECT FROM users WHERE username gelijk is aan de input AND password gelijk is aan de input. Een aanvaller die een enkele quote invoert gevolgd door OR 1=1 als gebruikersnaam maakt de WHERE-clausule altijd waar, waardoor authenticatie wordt omzeild. De fix is prepared statements gebruiken waar gebruikersinvoer als parameters wordt doorgegeven.
Test je kennis
Hoe voorkom je SQL-injectie?