SQL-injektion
SQL-injektion uppstår när externa data ändrar en databasfrågas struktur. Parameterbindning hanterar värden, inte åtkomsträttigheter.
SQL-injektion innebär att delar av SQL-instruktioner förs in via data som en applikation behandlar. Om sådana värden byggs in i en frågas text kan de ändra dess betydelse. Vilka data som kan läsas eller ändras beror bland annat på rättigheterna för det databaskonto som används.
Skilj projektfilter från frågestruktur
En fiktiv ärendeportal söker poster som hör till en projektreferens. Den behandlar värdet från fältet projectRef som en bunden frågeparameter: Frågans struktur är fast och värdet skickas separat genom databasgränssnittet. Det ska förbli ett sökvärde och inte bli en del av SQL-syntaxen.
Att bara förbereda en fråga efter att den har satts samman av indata skapar inte denna uppdelning. Inte heller tidigare lagrade data eller värden från andra system får bli okontrollerad SQL-text när en senare fråga byggs upp.
Bind värden och fastställ strukturen
Ett sorteringsfält som sortKey är ett annat fall. Platshållare för datavärden ersätter inte godtyckliga kolumnnamn eller sorteringsriktningar. Applikationen kopplar därför kända val till fasta kolumner och riktningar definierade i koden. OWASP beskriver uttryckligen denna skillnad mellan parameterbindning och tillåtna strukturval.
Parameterbindning kontrollerar inte heller om den inloggade personen får komma åt det efterfrågade projektet. Den behörighetskontrollen är fortfarande applikationens uppgift. Ett databaskonto begränsat till nödvändiga rättigheter kan begränsa möjliga skador; det tar inte bort själva den osäkra frågekonstruktionen.
Källor
Relaterade begrepp
- DatabasEn organiserad samling data som programvara kan söka i, läsa och ändra.
- SQLEtt språk för att definiera, fråga efter och ändra data; ingen enskild databasprodukt.
- Objektrelationell mappningTeknik som kopplar programobjekt till data i en relationsdatabas.
- DataminimeringDataminimering begränsar personuppgifter till vad som är lämpligt, relevant och nödvändigt för ett bestämt ändamål.
- Policy för datalagringEn policy för datalagring anger syfte, start, varaktighet och slut för lagringen. Raderingsjobb och kopior måste ingå i den tekniska lösningen.
- Envelope-krypteringEnvelope-kryptering skiljer datanyckeln från den nyckel som skyddar den. Den krypterade filen och inpackade datanyckeln behöver hanteras tillsammans.
Ditt projekt med ASES
Beskriv ditt projekt för oss. Vi hör av oss med en första bedömning.