Obsah:
Definice - Co znamená SQL Injection?
Injekce SQL je počítačový útok, ve kterém je škodlivý kód zabudován do špatně navržené aplikace a poté předán do backendové databáze. Škodlivá data pak vytvoří výsledky dotazů na databáze nebo akce, které by se nikdy neměly provést.
Techopedia vysvětluje SQL Injection
Podívejme se na příklad útoku SQL injection:
Aplikace provozující operace banky obsahuje nabídky, které lze použít k vyhledávání podrobností zákazníka pomocí datových bodů, jako je číslo sociálního zabezpečení zákazníka. Na pozadí aplikace volá dotaz SQL, který se spouští v databázi předáním zadaných hodnot hledání následujícím způsobem:
VYBRAJTE jméno klienta, telefon, adresu, datum_dodání WHERE social_sec_no = 23425
V tomto ukázkovém skriptu uživatel zadá do okna nabídky aplikace hodnotu 23425 a požádá jej o zadání čísla sociálního zabezpečení. Potom pomocí hodnoty poskytnuté uživatelem spustí dotaz SQL v databázi.
Uživatel se znalostmi jazyka SQL může aplikaci rozumět a místo zadání jediné hodnoty, když je požádán o číslo sociálního zabezpečení, zadejte řetězec „23425 nebo 1 = 1“, který je předán do databáze následujícím způsobem:
VYBRAJTE jméno klienta, telefon, adresu, datum_prijetí WHERE social_sec_no = 23425 nebo 1 = 1
Klauzula WHERE je důležitá, protože zavádí zranitelnost. V databázi je podmínka 1 = 1 vždy pravdivá a protože byl zadán dotaz pro vrácení podrobností o čísle sociálního zabezpečení klienta (23425) nebo KDE 1 = 1, dotaz vrátí všechny řádky v tabulce, což nebylo původní záměr.
Výše uvedený příklad útoku SQL injekcí je jednoduchý, ale ukazuje, jak zneužití zranitelnosti přimělo aplikaci ke spuštění dotazu nebo příkazu backendové databáze.
SQL injekční útoky lze zmírnit zajištěním správného návrhu aplikace, zejména v modulech, které vyžadují vstup uživatele ke spuštění databázových dotazů nebo příkazů. Ve výše uvedeném příkladu lze aplikaci změnit tak, aby akceptovala pouze jednu číselnou hodnotu.

