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.
Host: <script> ...
– Some parameters contain data based on user input
REQUEST_URI, PATH_INFO, QUERY_STRING
– Can be fakes
Spoofed IP address via the use of anonymous proxies.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 12
Validace číselných vstupních dat
Všechna vstupní data přicházejí do PHP jako řetězec
(string).
Číselný vstup by neměl být používán jako s řetězec
– nebezpečí chyby aplikace nebo napadení
Všechna číselná data by měla být validována:
// integer validation
if (!empty($_GET['id'])) {
$id = (int) $_GET['id'];
} else
$id = 0;
// floating point number validation
if (!empty($_GET['price'])) {
$price = (float) $_GET['price'];
} else
$price = 0.0;
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 13
Validace řetězců
PHP poskytuje funkce ctype... pro validaci
řetězců:
if (!ctype_alnum($_GET['login'])) {
echo "Only A-Za-z0-9 are allowed.";
}
if (!ctype_alpha($_GET['captcha'])) {
echo "Only A-Za-z are allowed.";
}
if (!ctype_xdigit($_GET['color'])) {
echo "Only hexadecimal values are allowed";
}
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 14
Validace cesty
Použít uživatelský vstup pro určení cesty k
souboru může být nebezpečné...
http://example.com/script.php?path=../../etc/passwd
<?php
$fp = fopen(“/home/dir/{$_GET[‘path’]}”, “r”);
?>
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 15
Validace cesty
PHP funkce basename() odstraní z řetězce cesty
všechno kromě poslední části cesty (jména
souboru):
<?php
$_GET[‘path’] = basename($_GET[‘path’]);
// only open a file if it exists.
if (file_exists(“/home/dir/{$_GET[‘path’]}”)) {
$fp = fopen(“/home/dir/{$_GET[‘path’]}”, “r”);
}
?>
department of computer