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.
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 16
Validace cesty
Lepší je však ukrýt názvy souborů a poskytnout
uživateli jenom seznam kódů
// make white-list of templates
$tmpl = array();
foreach(glob("templates/*.tmpl") as $v) {
$tmpl[md5($v)] = $v;
}
if (isset($tmpl[$_GET['path']]))
$fp = fopen($tmpl[$_GET['path']], "r");
http://example.com/script.php?path=57fb06d7...
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 17
magic_quotes_gpc
PHP má zabudováno automatické ošetření speciálních
znaků ve vstupu ( ‘, “, \, \0 (NULL) )
Nevýhody
– Zpomaluje zpracování vstupu.
• Ošetření číselných vstupů je možné dělat lépe přetypovaním.
• Vyžaduje 2 násobek paměti pro vstupní data.
– Na serveru může být vypnuté.
– Velice obecné řešení (někdy musíme ošetřit i jiné
znaky).
Je dobré mít funkci, která, jestli je magic_quotes zapnuté,
zruší lomítka a pak vlastní funkci pro ošetření vstupu
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 18
Magic Quotes
if (get_magic_quotes_gpc()) { // check magic_quotes_gpc state
function strip_quotes(&$var) {
if (is_array($var)
array_walk($var, 'strip_quotes');
else
$var = stripslashes($var);
}
// Handle GPC
foreach (array('GET','POST','COOKIE') as $v)
if (!empty(${"_".$v}))
array_walk(${"_".$v}, 'strip_quotes');
// Original file names may contain escaped data as well
if (!empty($_FILES))
foreach ($_FILES as $k => $v) {
$_FILES[$k]['name'] = stripslashes($v['name']);
}