10.05.2026

compunit Support

ČLÁNEK

Vkládání dat a obrana proti útokům

Příkaz INSERT: Jak přidat nový řádek?

Zatímco SELECT data vybíral, INSERT je vytváří. Představte si to jako vyplnění nového listu v našem pořadači a jeho založení do složky.

Základní syntaxe vypadá takto:

INSERT INTO uzivatele (jmeno, email, heslo) 
VALUES ('Jan Novák', 'jan@novak.cz', 'tajneheslo123');

Co se v dotazu děje?

  1. INSERT INTO uzivatele: Říkáme, do které tabulky chceme psát.

  2. (jmeno, email, heslo): V závorce definujeme seznam sloupců, které hodláme vyplnit.

  3. VALUES (...): Zde uvádíme konkrétní hodnoty v přesném pořadí, v jakém jsme vypsali sloupce.

Poznámka: Pokud má tabulka sloupec ID, který je nastaven jako AUTO_INCREMENT (automatické číslování), v příkazu INSERT ho vůbec neuvádíme. Databáze mu přiřadí další volné číslo sama.



SQL Injection: Když uživatel „přepíše“ váš dotaz

Představte si, že máte v PHP kód, který bere jméno z formuláře a vkládá ho přímo do dotazu: $sql = "SELECT * FROM uzivatele WHERE jmeno = '$jmeno_z_formulare'";

Pokud útočník do políčka pro jméno napíše: ' OR '1'='1, váš výsledný dotaz bude vypadat takto: SELECT * FROM uzivatele WHERE jmeno = '' OR '1'='1';

Protože 1=1 je vždy pravda, databáze útočníkovi vypíše úplně všechny uživatele i bez znalosti hesla. Tomuto principu se říká SQL Injection.



Obrana: Připravené dotazy (Prepared Statements)

Moderní a nejbezpečnější cestou, jak komunikovat s databází, je nepředávat data přímo, ale používat tzv. „zástupné symboly“ (otazníky).

Místo toho, abychom hodnoty do dotazu „vlepili“, pošleme databázi nejprve šablonu (dotaz s otazníky) a data jí pošleme až v druhém kroku. Databáze pak s těmito daty zachází pouze jako s textem, nikoliv jako s příkazem, což útok znemožní.

Příklad v PHP (pomocí PDO):

// 1. Připravíme si šablonu s otazníky
$stmt = $pdo->prepare("INSERT INTO uzivatele (jmeno, email) VALUES (?, ?)");

// 2. Data pošleme bezpečně odděleně v poli
$stmt->execute([$jmeno, $email]);


Závěr

Vkládání dat je základem každé interaktivní aplikace – od registrace uživatelů po přidávání příspěvků na zeď. Pamatujte si však zlaté pravidlo: Nikdy nevěřte ničemu, co uživatel napíše do formuláře. Vždy používejte Prepared Statements.

V příští kapitole se podíváme na úpravu již existujících dat pomocí příkazu UPDATE a naučíme se mazat záznamy tak, abychom si omylem nesmazali celou databázi.

Cookies
V souladu s vaším potvrzením používáme cookies soubory, abychom Vám mohli nabídnout co nejvhodnější obsah.

Zpět nahoru