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.
– a. potvrzení dodatečným kliknutím
– b. potvrzení heslem (u důležitých akcí)
Anti-CSRF Token
– kód vygenerován u každého zobrazení formuláře
– kód se zobrazí u formuláře a zárověň uloží do SESSION
– při přijetí požadavku s daty formuláře porovnáme
$_POST['token'] a $_SESSION['token']
– timeout může být nastaven pro platnost tokenu
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 27
SQL Injection
SQL injection se podobá XSS.
Nekontrolovaný uživatelský vstup je použit při vytváření
SQL dotazu.
Pomocí vloženého dodatečného SQL dotazu do vstupu
může útočník:
– smazat, vložit nebo měnit data
– zapříčinit DoS
Příklad:
http://example.com/db.php?id=0;DELETE%20FROM%20users
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 28
Prevence SQL injection: SQL escaping
PHP API pro databáze má často speciální funkce pro
úpravu vstupu:
– MySQL
• mysql_escape_string()
• mysqli_real_escape_string()
– PostgreSQL
• pg_escape_string()
• pg_escape_bytea()
– SQLite
• sqlite_escape_string()
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 29
Escaping v praxi
// undo magic_quotes_gpc to avoid double escaping
if (get_magic_quotes_gpc()) {
$_GET['name'] = stripslashes($_GET['name'];
$_POST['binary'] = stripslashes($_GET['binary']);
}
$name = pg_escape_string($_GET['name']);
$binary = pg_escape_bytea($_POST['binary']);
pg_query($db, "INSERT INTO tbl (name,image)
VALUES('{$name}', '{$image}')");
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 30
Nedostatky SQL escaping-u
Když do SQL dotazu vkládáme holý integer,
escaping nefunguje
– žádné speciální znaky na úpravu