Ošetření vstupních proměnných
Z MiS
(Rozdíly mezi verzemi)
(Vytvoření stránky) |
(Příklad filtrování) |
||
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:PHP]] | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:PHP]] | ||
+ | |||
+ | == 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. | 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. | ||
Řádka 6: | Řádka 8: | ||
* code injection | * code injection | ||
* code insertion | * code insertion | ||
− | * cross-site-scripting | + | * cross-site-scripting (CSS — nepleťte s kaskádovými styly) |
− | Více o těchto tématech například na: [http://www.technicalinfo.net/papers/CSS.html TechnicalInfo.net Cross-site-scripting]. | + | Více o těchto tématech například na: [http://www.technicalinfo.net/papers/CSS.html 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 <code>filter_var</code>. | 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 <code>filter_var</code>. | ||
== 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. | ||
+ | |||
+ | <div class="Priklad">Třeba znak <, který by mohl být použit k vložení značek HTML, nahradí za HTML element &lt;, který se zobrazí stejně, ale značku s ním vložit nelze.</div> | ||
+ | |||
; Parametry | ; Parametry | ||
* vstup ... text, který chceme kontrolovat | * vstup ... text, který chceme kontrolovat |
Verze z 5. 5. 2014, 05:18
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