Ošetření vstupních proměnných
Z MiS
(Rozdíly mezi verzemi)
(Příklad filtrování) |
m (Stránka Filtrování vstupních proměnných přemístěna na stránku Ošetření vstupních proměnných: Lépe vystihuje podstatu.) |
Verze z 7. 5. 2014, 07:30
Proč bychom měli proměnné ošetřit?
Pokud v PHP kódu nebo SQL dotazech používáme data, načtená ze vstupu (to je typické pro jazyk PHP), měli bychom si ověřit, že potenciální útočník do dat nezahrnul kód, který by mohl narušit funkci aplikace.
Techniky útoku založené na podsouvání záměrně poškozených dat se nazývají:
- code injection
- code insertion
- cross-site-scripting (CSS — nepleťte s kaskádovými styly)
Více o těchto tématech například na: TechnicalInfo.net → Cross-site-scripting.
Pro základní vyfiltrování podsunutého kódu bychom při čtení vstupu z URL adresy či formulářů a dalších podobných zdrojů měli použít alespoň funkci filter_var
.
filter_var
Funkce se snaží nahrazovat „podezdřelé“ znaky (takové, které by mohly být zneužity k útoku) jejich bezpečnými alternativami.
Třeba znak <, který by mohl být použit k vložení značek HTML, nahradí za HTML element <, který se zobrazí stejně, ale značku s ním vložit nelze.
- Parametry
- vstup ... text, který chceme kontrolovat
- typ filtru ... jaký filtr chceme uplatnit
- Typy filtrů
- FILTER_SANITIZE_FULL_SPECIAL_CHARS ... nahradí všechny speciální znaky z řetězce
- FILTER_SANITIZE_NUMBER_INT ... odstraní znaky, které netvoří čísla
- FILTER_SANITIZE_ENCODED
- FILTER_VALIDATE_BOOLEAN ... převede na logickou hodnotu
- FILTER_VALIDATE_INT ... převede na číselnou hodnotu
Více viz: W3Schools.com → PHP Filter Functions