bezpečnost webových aplikací web inkognito vŠe 05/2013
TRANSCRIPT
Michal Špaček, @iz228 VŠE, květen 2013www.michalspacek.cz @spazef0rze
Slajdy jsou bez mých poznámek,nedávají tedy moc smysl pro toho, kdo na semináři nebyl.
Michal Špaček @spazef0rze www.michalspacek.cz
Útoky na web
SQL Injection
Cross-Site Scripting
Full Path Disclosure…
a stovky dalších
Michal Špaček @spazef0rze www.michalspacek.cz
Full Path Disclosure (FPD)
Vyzrazení plné cesty ke skriptuhttp://devblog.cz/2012/04/fpd-aneb-full-path-disclosure/
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Řešení?
display_errors = Off
Michal Špaček @spazef0rze www.michalspacek.cz
log_errors = On
Michal Špaček @spazef0rze www.michalspacek.cz
Cross-Site Scripting (XSS)
Útočník vloží na naši stránkuvlastní HTML nebo JS kód
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
hledej?search=a“><img src=“…
HTML Injection (Hi)
value=“a“><img src=“…“>
Michal Špaček @spazef0rze www.michalspacek.cz
Řešení?
htmlspecialchars($string)
Michal Špaček @spazef0rze www.michalspacek.cz
htmlspecialchars($string, ENT_QUOTES)
Michal Špaček @spazef0rze www.michalspacek.cz
Nepoužívat
strip_tags()
proti XSS
Michal Špaček @spazef0rze www.michalspacek.cz
SQL Injection
Útočník modifikuje SQL dotaz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
"… WHERE znacka = '{$_GET['znacka']}'"
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
'… WHERE id = ' . $_GET['id']
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
' OR 1=1; --
Michal Špaček @spazef0rze www.michalspacek.cz
SELECT jmeno, adresa FROM vozidla
WHERE rz =
'$prectena';
Michal Špaček @spazef0rze www.michalspacek.cz
SELECT jmeno, adresa FROM vozidla
WHERE rz = '1AM 1337';
1AM 1337
Michal Špaček @spazef0rze www.michalspacek.cz
SELECT jmeno, adresa
FROM vozidla
WHERE rz = '' OR 1=1;
--';
' OR 1=1; --
Michal Špaček @spazef0rze www.michalspacek.cz
Řešení?
Prepared statements (PDO)
Michal Špaček @spazef0rze www.michalspacek.cz
SELECT jmeno, adresa
FROM vozidla
WHERE rz = ?;
' OR 1=1; --
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
mysql_set_charset()
mysql_real_escape_string()
Michal Špaček @spazef0rze www.michalspacek.cz
Nepoužívat
addslashes()
proti SQLIA
Michal Špaček @spazef0rze www.michalspacek.cz
2012 …
Michal Špaček @spazef0rze www.michalspacek.cz
2012 … 56
Michal Špaček @spazef0rze www.michalspacek.cz
2011 … 51
2010 … 59
2009 … 82
Michal Špaček @spazef0rze www.michalspacek.cz
Cross-SitePort Attack
(XSPA)
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
DistributedDenial-of-Service
(DDoS)
Michal Špaček @spazef0rze www.michalspacek.cz
Hashování hesel
Nepoužívat MD5
Ani SHA-1
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Řešení?
SHA-512 a salt?
hash_hmac()
Michal Špaček @spazef0rze www.michalspacek.cz
oclHashcat
md5($pass.$salt)
md5($salt.$pass)
sha1($pass.$salt)
sha1($salt.$pass)
Michal Špaček @spazef0rze www.michalspacek.cz
Lepší řešení?
scrypt
Michal Špaček @spazef0rze www.michalspacek.cz
bcryptBlowfish hashing
Michal Špaček @spazef0rze www.michalspacek.cz
crypt() salt=$2y$…
password_hash()password_verify()
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
robots.txt
Michal Špaček @spazef0rze www.michalspacek.cz
Michal Špaček @spazef0rze www.michalspacek.cz
/.svn/entries
Michal Špaček @spazef0rze www.michalspacek.cz
http://hostname/.svn/text-base/index.php.svn-base
That's it. That's me.
Michal Špačekwww.michalspacek.cz
@spazef0rze
Přijďte na školeníhttp://www.michalspacek.cz/skoleni