Command Palette

Search for a command to run...

Slovník SQL Injection (SQLi)

Co je SQL Injection (SQLi)?

SQL Injection (SQLi) je typ útoku, při kterém útočníci vkládají škodlivé SQL příkazy do vstupního pole, aby manipulovali s databází.

Tento útok cílí na aplikace, které nedokáží správně zpracovat validaci uživatelského vstupu, což umožňuje neoprávněný přístup k citlivým datům, jako jsou hesla nebo údaje o kreditních kartách atd.

Jak SQL Injection funguje

Když aplikace přímo zahrne uživatelský vstup do databázového dotazu bez řádné validace, útočníci mohou změnit chování dotazu tak, aby vložili škodlivý SQL příkaz.

Například:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Útočník by mohl vložit:

' OR '1'='1

Výsledkem by bylo:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

To vždy vrátí pravda, což umožňuje neoprávněný přístup.

Proč je SQL Injection důležitý v kybernetické bezpečnosti

SQL Injection je nejnebezpečnější a nejstarší technika v oblasti kybernetické bezpečnosti. Tento typ útoku je konzistentně uveden v OWASP Top 10.

I malé zranitelnosti umožňují útočníkovi:

  • Přístup, úprava nebo smazání dat
  • Obejít autentizaci
  • Provádět administrativní operace na databázi.
  • Ohrozit celý systém.

Běžné typy SQL injekcí

  • Klasická SQLi : Přímá injekce prostřednictvím webových formulářů nebo parametrů URL.
  • Slepá SQLi : Útočníci nepřímo odvozují informace z databáze (např. prostřednictvím chybových zpráv nebo doby odezvy).
  • Union-based SQLi : Používá operátor UNION ke kombinaci výsledků z více dotazů.
  • Error-based SQLi : Spoléhá na chybové zprávy databáze k extrakci informací.
  • Time-based Blind SQLi : Využívá zpoždění odezvy serveru k odhadu výsledků dotazů.

Jak zabránit SQL injekci

1. Používejte parametrizované dotazy (připravené příkazy)

Zajistěte, aby SQL příkazy zpracovávaly uživatelský vstup jako data, nikoli jako spustitelný kód.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Validace a sanitizace vstupu

Validujte veškerý vstup od uživatelů, povolujte pouze očekávané znaky.

3. Používejte ORM frameworky

Frameworky jako Prisma, Hibernate atd. snižují přímou manipulaci s SQL.

4. Princip nejmenších privilegií

Omezte uživatelská oprávnění, udělujte pouze potřebná oprávnění.

5. Pravidelné bezpečnostní testování

Používejte nástroje pro testování bezpečnosti aplikací jako SAST, DAST nebo IAST k včasnému odhalení chyb injekcí.

Příklad v reálném světě

Webová stránka online obchodu utrpěla narušení, kdy útočníci použili SQL injekci ve formuláři pro přihlášení k extrakci údajů o kreditních kartách z její databáze.

Související termíny

Další kroky

Připraveni zabezpečit vaše aplikace? Vyberte si svou cestu vpřed.

Připojte se k více než 500 společnostem, které již zabezpečují své aplikace s Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready