SlideShare a Scribd company logo
Michal Špaček, @iz228 VŠE, květen 2013

www.michalspacek.cz @spazef0rze
Slajdy jsou bez mých poznámek,
nedávají tedy moc smysl pro toho, kdo na semináři nebyl.
Ú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 skriptu
http://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ánku
vlastní 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
HTML Injection (Hi)
hledej?search=a“><img src=“…

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
1AM 1337
SELECT jmeno, adresa
FROM vozidla
WHERE rz = '1AM 1337';

Michal Špaček

@spazef0rze

www.michalspacek.cz
' OR 1=1; -SELECT jmeno, adresa
FROM vozidla
WHERE rz = '' 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-Site
Port Attack
(XSPA)

Michal Špaček

@spazef0rze

www.michalspacek.cz
Michal Špaček

@spazef0rze

www.michalspacek.cz
Michal Špaček

@spazef0rze

www.michalspacek.cz
Distributed
Denial-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
bcrypt

Blowfish 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

Michal Špaček

@spazef0rze

www.michalspacek.cz
That's it. That's me.
Michal Špaček
www.michalspacek.cz
@spazef0rze
Přijďte na školení
http://www.michalspacek.cz/skoleni

More Related Content

More from Michal Špaček

Víceúrovňová obrana vysvětlená na Cross-Site Scriptingu
Víceúrovňová obrana vysvětlená na Cross-Site ScriptinguVíceúrovňová obrana vysvětlená na Cross-Site Scriptingu
Víceúrovňová obrana vysvětlená na Cross-Site Scriptingu
Michal Špaček
 
Lámání a ukládání hesel
Lámání a ukládání heselLámání a ukládání hesel
Lámání a ukládání hesel
Michal Špaček
 
Fantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v OpeřeFantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v Opeře
Michal Špaček
 
Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of Defense
Michal Špaček
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
Michal Špaček
 
Medvědí služba
Medvědí službaMedvědí služba
Medvědí služba
Michal Špaček
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQ
Michal Špaček
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Michal Špaček
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in IT
Michal Špaček
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všude
Michal Špaček
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English version
Michal Špaček
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeních
Michal Špaček
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketing
Michal Špaček
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and why
Michal Špaček
 
Hlava není na hesla
Hlava není na heslaHlava není na hesla
Hlava není na hesla
Michal Špaček
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)
Michal Špaček
 
HTTP/2
HTTP/2HTTP/2
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Michal Špaček
 
Přechod na HTTPS
Přechod na HTTPSPřechod na HTTPS
Přechod na HTTPS
Michal Špaček
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
Michal Špaček
 

More from Michal Špaček (20)

Víceúrovňová obrana vysvětlená na Cross-Site Scriptingu
Víceúrovňová obrana vysvětlená na Cross-Site ScriptinguVíceúrovňová obrana vysvětlená na Cross-Site Scriptingu
Víceúrovňová obrana vysvětlená na Cross-Site Scriptingu
 
Lámání a ukládání hesel
Lámání a ukládání heselLámání a ukládání hesel
Lámání a ukládání hesel
 
Fantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v OpeřeFantom Opery, "VPN" a Secure Proxy v Opeře
Fantom Opery, "VPN" a Secure Proxy v Opeře
 
Quality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of DefenseQuality of Life, Multiple Lines of Defense
Quality of Life, Multiple Lines of Defense
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
 
Medvědí služba
Medvědí službaMedvědí služba
Medvědí služba
 
XSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQXSS PHP CSP ETC OMG WTF BBQ
XSS PHP CSP ETC OMG WTF BBQ
 
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdíleníPassword manažeři detailněji – 1Password, LastPass, 2FA, sdílení
Password manažeři detailněji – 1Password, LastPass, 2FA, sdílení
 
Operations security (OPSEC) in IT
Operations security (OPSEC) in ITOperations security (OPSEC) in IT
Operations security (OPSEC) in IT
 
HTTPS (a šifrování) všude
HTTPS (a šifrování) všudeHTTPS (a šifrování) všude
HTTPS (a šifrování) všude
 
HTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English versionHTTP Strict Transport Security (HSTS), English version
HTTP Strict Transport Security (HSTS), English version
 
Bezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeníchBezpečnost na mobilních zařízeních
Bezpečnost na mobilních zařízeních
 
Základy webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketingZáklady webové bezpečnosti pro PR a marketing
Základy webové bezpečnosti pro PR a marketing
 
I forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and whyI forgot my password – what a secure password reset needs to have and why
I forgot my password – what a secure password reset needs to have and why
 
Hlava není na hesla
Hlava není na heslaHlava není na hesla
Hlava není na hesla
 
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS)
 
HTTP/2
HTTP/2HTTP/2
HTTP/2
 
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
Víte, že nevíte, že já vím, že nevíte? (WebTop100 2014)
 
Přechod na HTTPS
Přechod na HTTPSPřechod na HTTPS
Přechod na HTTPS
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
 

Bezpečnost webových aplikací Web Inkognito VŠE 05/2013