SQL Injection
SQL injection je forma kybernetického útoku zaměřená na databázově propojené webové stránky a webové aplikace. Tyto útoky zneužívají nesprávně nakonfigurovaný software webových stránek a databázového serveru a přimějí server zpracovat příkazy SQL, které by jinak neprovedl. Tyto útoky mohou odhalit citlivé osobní a finanční údaje, umožnit útočníkovi změnit nebo odstranit informace uložené v databázi nebo poskytnout jiný neoprávněný přístup.
Webová stránka je zranitelná vůči SQL injection, pokud přijímá vstup uživatele z textového formuláře a zahrnuje ho jako součást dotazu SQL. Útočník místo očekávaných informací například (uživatelského jména) vyplní pole formuláře textovým řetězcem, který upraví dotaz SQL. Hypotetický dotaz může například začínat takto: SELECT UserID, Name, Password FROM Users WHERE UserID = , po čemž následuje vstup z pole formuláře s ID uživatele. Pokud uživatel zadá své ID, dotaz funguje podle očekávání a zobrazí jeho údaje.
Pokud však server vkládá vstupní text do dotazu bez omezení, může ho útočník použít k úpravě samotného příkazu SQL. Když někdo místo ID uživatele zadá text 317 OR 1=1, dotaz se změní na SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Protože podmínka OR 1=1 vždy vyhodnotí hodnotu true, přepíše ID uživatele; dotaz místo toho vrátí ID uživatelů, jména a hesla všech záznamů v tabulce Users. Jiné typy vkládání kódu mohou útočníkovi umožnit přihlásit se jako správce webu, odstranit z databáze záznamy nebo tabulky či (v některých krajních případech) vložit a spustit shellové skripty a jiný kód.
Správce webu může útokům typu SQL injection zabránit tím, že bude software serveru udržovat aktuální. Důležité je také „sanitizovat“ vstupy do databáze omezením vstupního textu nebo odfiltrováním určitých znaků. Správci webů mohou své dotazy SQL také parametrizovat — použít v dotazu zástupné symboly odkazující na vstup uživatele namísto jeho přímého vložení do dotazu.
Otestujte své znalosti