Bezpečnost aplikací
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.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 6
Register Globals
Nejčastější zdroj bezpečnostních děr v PHP.
Každý vstupní parametr je přístupný jako stejně
pojmenovaná proměnná:
– script.php?foo=bar >> $foo = “bar”;
– Neznáme zdroj vstupu (cookie, get, post...)
– Neinicializované proměnné mohou být “podstrčeny”
uživatelem.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 7
Register Globals
if (authenticated_user()) {
$authorized = true;
}
if ($authorized) {
include '/highly/sensitive/data.php';
}
$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
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 8
Řešení pro Register Globals
Vypnout
register_globals v php.ini.
– V základní konfiguraci od PHP 4.2.0
Programovat s
error_reporting nastaveným na
E_ALL.
– umožňuje vidět neinicializované proměnné.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 9
Další problémy s Register Globals
Dotaz
script.php?var[]=1&var[]=2
vloží do pole $var dvě hodnoty
Vložení v PHP není možné detekovat.
$var[] = “123”;
foreach ($var as $entry) {
make_admin($entry);
}
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 10
$_REQUEST
Pole $_REQUEST kombinuje vstupy z POST, GET
a COOKIE
Může dojít ke kolizi hodnot... nepoužívat!
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 11
$_SERVER
Even though the $_SERVER super-global is populated
based on data supplied by the web-server it should not be
trusted.
– User may inject data via headers