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.

Útočník vloží do příkazu dotazu neočekávaný text, aby ho změnil
Útočník vloží do příkazu dotazu neočekávaný text, aby ho změnil

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.

Aktualizováno March 20, 2023 od Brian P.

quizOtestujte své znalosti

What is the purpose of a JRE?

A
It helps transfer images between a digital camera and a computer.
0%
B
It provides an environment for running Java apps and applets.
0%
C
It restores lost data from a backup disk.
0%
D
It monitors incoming and outgoing network traffic.
0%
Correct! Incorrect!     View the JRE definition.
More Quizzes →

Počítačový slovník Tech Terms

Definice SQL Injection na této stránce je originální definice napsaná autory TechTerms.com. Pokud chcete na tuto stránku odkazovat nebo tuto definici citovat, použijte prosím zelený citační pruh přímo pod definicí.

Naším cílem je vysvětlovat počítačovou terminologii srozumitelným způsobem. U každé zveřejněné definice usilujeme o přesnost a jednoduchost. Pokud máte zpětnou vazbu nebo chcete navrhnout nový technický pojem, kontaktujte nás.

Newsletter Tech Terms

Rozšiřte své technické znalosti s naším denním nebo týdenním newsletterem! Přihlaste se ještě dnes a dostávejte nové pojmy a kvízy přímo do schránky.

Přihlaste se k bezplatnému newsletteru TechTerms

Jak často chcete dostávat e-mail?

Odhlásit se nebo změnit frekvenci můžete kdykoli pomocí odkazů v každém e-mailu. Dotazy? Prosím kontaktujte nás.

Poznámka: Newsletter je zasílán v angličtině.