Skip to content

Commit

Permalink
x
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Dec 18, 2024
1 parent ba571fa commit 163e049
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions database/cs/security.texy
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,11 @@ Validace vstupních dat

**Nejdůležitější je zajistit správný datový typ parametrů** - to je nutná podmínka pro bezpečné použití Nette Database. Databáze předpokládá, že všechna vstupní data mají správný datový typ odpovídající danému sloupci.

Například pokud by `$name` v předchozích příkladech bylo neočekávaně pole místo řetězce, Nette Database by se pokusilo vložit všechny jeho prvky do SQL dotazu, což by bylo nežádoucí. Proto nikdy nepoužívejte nevalidovaná data z `$_GET`, `$_POST` nebo `$_COOKIE` přímo v databázových dotazech.
Například pokud by `$name` v předchozích příkladech bylo neočekávaně pole místo řetězce, Nette Database by se pokusilo vložit všechny jeho prvky do SQL dotazu, což by vedlo k chybě. Proto **nikdy nepoužívejte** nevalidovaná data z `$_GET`, `$_POST` nebo `$_COOKIE` přímo v databázových dotazech.

Druhá úroveň validace se týká formátu a rozsahu dat. Například u řetězců kontroly UTF-8 kódování a délky odpovídající definici sloupce v databázi. Že číselné hodnoty jsou v povoleném rozsahu pro daný sloupec, atd.
U této úrovně validace se můžeme částečně spolehnout i na databázi samotnou - mnoho databází tyto podmínky kontroluje a odmítne nevalidní data. Nicméně chování se může lišit, některé mohou dlouhé řetězce tiše zkrátit nebo čísla mimo rozsah oříznout, což může být opět nežádoucí.
Na druhé úrovni kontrolujeme technickou validitu dat - například zda jsou řetězce v UTF-8 kódování a jejich délka odpovídá definici sloupce, nebo zda jsou číselné hodnoty v povoleném rozsahu pro daný datový typ sloupce. U této úrovně validace se můžeme částečně spolehnout i na databázi samotnou - mnoho databází odmítne nevalidní data. Nicméně chování se může lišit, některé mohou dlouhé řetězce tiše zkrátit nebo čísla mimo rozsah oříznout.

Třetí úroveň představují logické kontroly specifické pro vaši aplikaci. Například že hodnoty v select boxech musí odpovídat nabízeným možnostem, čísla musí být v očekávaném rozsahu (např. věk 0-150 let), vzájemné závislosti mezi hodnotami musí dávat smysl.
Třetí úroveň představují logické kontroly specifické pro vaši aplikaci. Například ověření, že hodnoty ze select boxů odpovídají nabízeným možnostem, že čísla jsou v očekávaném rozsahu (např. věk 0-150 let) nebo že vzájemné závislosti mezi hodnotami dávají smysl.

Doporučené způsoby implementace validace:
- Používejte [Nette Formuláře|forms:], které automaticky zajistí správnou validaci všech vstupů
Expand Down

0 comments on commit 163e049

Please sign in to comment.