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 22
Prevence 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.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 23
Prevence XSS
$str = strip_tags($_POST['message']);
// encode any foreign & special chars
$str = htmlentities($str);
// maintain new lines, by converting them to <br />
echo nl2br($str);
// strip tags can be told to "keep" certain tags
$str = strip_tags($_POST['message'], '<b><p><i><u>');
$str = htmlentities($str);
echo nl2br($str);
Povolení tagů v strip_tags() (druhý argument) je
nebezpečné, protože atributy těchto tagů zůstanou bez kontroly.
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 24
Problém povolení tagů
<b style="font-size: 500px">
TAKE UP ENTIRE SCREEN
</b>
<u onmouseover="alert('JavaScript is allowed');">
<b style="font-size: 500px">Lot's of text</b>
</u>
<p style="background:
url(http://tracker.com/image.gif)">
Let's track users
</p>
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 25
Cross-Site Request Forgeries (XSRF)
Uživatel (oběť) navštíví stránku útočníka.
Stránka bez vedomí uživatele vykoná akci na (cílovém)
serveru, na který je uživatel legálně přihlášen.
obrázek z
http://shiflett.org/articles/foiling-cross-site-attacks
department of computer
science
and engineering
X36TW1 – Tvorba webových aplikací 1
Přednáška 9 / Strana 26
Prevence XSRF
Používat POST pro všechny akce.
Vyžadujte potvrzení akce