Wat is SQL-injectie?
Aanval die misbruik maakt van een webapplicatie die SQL-statements opbouwt door de invoer van de gebruiker eenvoudig aan te plakken, en met de invoer de betekenis van de opdracht verandert om de database onbevoegd te manipuleren. Prepared statements met placeholders zijn de fundamentele tegenmaatregel.
Japanse benaming: SQLインジェクション
“SQL-injectie” komt voor in 3 oefenvragen uit 1 onderwerpen, bijv. Basis van informatiebeveiliging.
Vakgebied: Basis van informatiebeveiliging
Hoe de aanval werkt
Als een applicatie een SQL-statement opbouwt door tekenreeksen zoals „… WHERE name = '”, de invoerwaarde en „'” aan elkaar te plakken, sluit een aanhalingsteken in de invoer de tekenreeks af en wordt alles wat volgt als SQL-opdracht geïnterpreteerd. Met de klassieke invoer uit leerboeken, ' OR '1'='1, wordt de altijd ware voorwaarde „of '1' is gelijk aan '1'” toegevoegd, waardoor de authenticatie kan worden omzeild. Het kan ook leiden tot het lezen, wijzigen of verwijderen van gegevens.
Veelgestelde vragen
Kan SQL-injectie worden voorkomen door escapen?
Escapen kan het in sommige gevallen voorkomen, maar elke regel voor elk type database en elke tekencodering moet zonder uitzondering worden afgehandeld, en één enkele leemte laat de aanval slagen. Prepared statements met placeholders zijn daarom de basistegenmaatregel.
Kan SQL-injectie worden voorkomen door de lengte van de invoer te beperken?
Nee. Ook korte tekenreeksen kunnen de betekenis van een opdracht veranderen. Beperkingen van de lengte of van de soorten tekens zijn aanvullende maatregelen; de fundamentele tegenmaatregel is prepared statements.