Dynamické stránky s přístupem do databáze (formuláře a jejich zpracování, zabezpečení uživatelského vstupu, zápis do databáze, výpis dat z databáze)
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
Zabezpečení uživatelského vstupu
Je třeba zabezpečit, aby server od uživatele dostal taková data, která očekává. Byť můžeme pro
ověření tvaru dat použít JavaScript na straně klienta, tato ochrana lze obejít a někdy nemusí být
funkční. Nejspolehlivější je tak zabezpečení na straně serveru, kde po odeslání formuláře každý
odeslaný vstup (prvek) zkontrolujeme – zda odpovídá potřebám – např. zda je e-mail či datum
zadáno ve správném tvaru.
Kromě toho je třeba zabezpečit aplikaci proti různým útokům, jako je např. SQL injection, což je
útok, při němž je prostřednictvím webového formuláře odeslán SQL dotaz, který je, namísto, aby
PAD Programování a databáze
Téma 21
Školní rok 2017/2018
2/2
Jan Švábík, V4D
s ním server pracoval jako s obyčejným textem, zpracován, a to právě z důvodu špatného nebo
žádného zabezpečení takových situací.
K ověřování správného tvaru dat se používají filtry, které přineslo PHP 7, či vlastní funkce, které
obvykle využívají porovnání s regulárním výrazem. SQL injection útokům lze zabránit přidáním
funkce bind_param('ssi', $a, $b, $c) před vložením hodnoty do takových proměnných. Při
odeslání SQL dotazu se ověří, zda proměnné obsahují požadovaný datový typ. Funkce zároveň
zabrání SQL injection. První parametr 'ssi' znamená, že první a druhá proměnná budou datového
typu string a třetí typu integer.
Různé knihovny, které komunikaci s DB usnadňují (např. dibi), většinou mívají toto zabezpečení
implementováno samy v sobě.
Zápis do databáze
Zápis do databáze se provádí pomocí nějakého databázového dotazu – odesláním příslušného
požadavku na databázi – tedy odesláním požadavku pro uložení dat společně s takovými daty.