Zápisky z přednášek
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.
•
každý uživatelský vstup musí být před použitím validován
•
ke vstupním hodnotám přistupujeme pomocí super globálních proměnných
•
$_GET – data z požadavků GET.
•
$_POST – data z požadavků POST.
•
$_COOKIE – cookie data.
•
$_FILES – uploadované soubory.
•
$_SERVER – serverová data
•
$_ENV – proměnné prostředí
•
$_REQUEST – kombinace GET/POST/COOKIE
Druhy Útoků
Register Globals
•
Každý vstupní parametr je přístupný jako stejně pojmenovaná proměnná
•
Neznáme zdroj vstupu, neinicializované proměnné můžou být podstrčena uživatelem
•
$authorized není v skriptu inicializováno
• zaslaním GET požadavku http://example.com/script.php?authorized=1 získá útočník přístup
k citlivým datům
Řešení pro register globals
•
Vypnout register_globals v php.ini.
•
Programovat s error_reporting nastaveným na E_ALL - umožňuje vidět neinicializované
proměnné.
$_REQUEST
•
Nepoužívat, kombinace post, get a cookie, může dojít k záměně
$_SERVER
•
Také nepoužívat, některé parametry této proměnné závisí na vstupu od uživatele
•
Mohou být pozměněny
Validace vstupu
•
Kontrola čísel, do PHP vstupují jako řetězec
•
Kontrola řetězců
•
Kontrola cesty – řeší se pomocí metody basename()
Magic quotes
•
PHP má zabudováno automatické ošetření speciálních znaků ve vstupu ( ‘, “, \, \0 (NULL)).
Může být zakázáno na serveru, dost zpomaluje, potřeba dvojnásobné paměti
Cross Site Scripting – XSS
•
situace, kdy útočník vloží do stránky škodlivý HTML kód, který se pak zobrazí na stránce
(např. ve fóru)
Řešení XSS
•
Prevence spočívá ve filtrování zobrazovaného uživatelského vstupu následovnými
funkcemi:
•
htmlspecialchars()-Převede zvláštní znaky na HTML entity (‘, “, <, >, &)
•
htmlentities()- Převést všechny použitelné znaky na HTML entity.
•
strip_tags()- Odstraní z řetězce HTML a PHP tagy.
•
mysqli_real_escape_string()- Ošetření speciálně pro použití v MySQL.
XSRF útok
•
Cross Site Request Forgery
•
Uživatel (oběť) navštíví stránku útočníka.