Michal Špaček, @iz228 VŠE, květen 2013

www.michalspacek.cz @spazef0rze
Slajdy jsou bez mých poznámek,
nedávají tedy moc s...
Útoky na web
SQL Injection
Cross-Site Scripting
Full Path Disclosure
…
a stovky dalších

Michal Špaček

@spazef0rze

www.m...
Full Path Disclosure (FPD)
Vyzrazení plné cesty ke skriptu
http://devblog.cz/2012/04/fpd-aneb-full-path-disclosure/

Micha...
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.michals...
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.michalspa...
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
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Bezpečnost webových aplikací Web Inkognito VŠE 05/2013
Upcoming SlideShare
Loading in...5
×

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

387

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
387
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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.
  2. 2. Útoky na web SQL Injection Cross-Site Scripting Full Path Disclosure … a stovky dalších Michal Špaček @spazef0rze www.michalspacek.cz
  3. 3. 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
  4. 4. Michal Špaček @spazef0rze www.michalspacek.cz
  5. 5. Michal Špaček @spazef0rze www.michalspacek.cz
  6. 6. Michal Špaček @spazef0rze www.michalspacek.cz
  7. 7. Řešení? display_errors = Off Michal Špaček @spazef0rze www.michalspacek.cz
  8. 8. log_errors = On Michal Špaček @spazef0rze www.michalspacek.cz
  9. 9. 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
  10. 10. Michal Špaček @spazef0rze www.michalspacek.cz
  11. 11. Michal Špaček @spazef0rze www.michalspacek.cz
  12. 12. Michal Špaček @spazef0rze www.michalspacek.cz
  13. 13. HTML Injection (Hi) hledej?search=a“><img src=“… value=“a“><img src=“…“> Michal Špaček @spazef0rze www.michalspacek.cz
  14. 14. Řešení? htmlspecialchars($string) Michal Špaček @spazef0rze www.michalspacek.cz
  15. 15. htmlspecialchars($string, ENT_QUOTES) Michal Špaček @spazef0rze www.michalspacek.cz
  16. 16. Nepoužívat strip_tags() proti XSS Michal Špaček @spazef0rze www.michalspacek.cz
  17. 17. SQL Injection Útočník modifikuje SQL dotaz Michal Špaček @spazef0rze www.michalspacek.cz
  18. 18. Michal Špaček @spazef0rze www.michalspacek.cz
  19. 19. Michal Špaček @spazef0rze www.michalspacek.cz
  20. 20. "… WHERE znacka = '{$_GET['znacka']}'" Michal Špaček @spazef0rze www.michalspacek.cz
  21. 21. Michal Špaček @spazef0rze www.michalspacek.cz
  22. 22. '… WHERE id = ' . $_GET['id'] Michal Špaček @spazef0rze www.michalspacek.cz
  23. 23. Michal Špaček @spazef0rze www.michalspacek.cz
  24. 24. ' OR 1=1; -Michal Špaček @spazef0rze www.michalspacek.cz
  25. 25. SELECT jmeno, adresa FROM vozidla WHERE rz = '$prectena'; Michal Špaček @spazef0rze www.michalspacek.cz
  26. 26. 1AM 1337 SELECT jmeno, adresa FROM vozidla WHERE rz = '1AM 1337'; Michal Špaček @spazef0rze www.michalspacek.cz
  27. 27. ' OR 1=1; -SELECT jmeno, adresa FROM vozidla WHERE rz = '' OR 1=1; --'; Michal Špaček @spazef0rze www.michalspacek.cz
  28. 28. Řešení? Prepared statements (PDO) Michal Špaček @spazef0rze www.michalspacek.cz
  29. 29. SELECT jmeno, adresa FROM vozidla WHERE rz = ?; ' OR 1=1; -Michal Špaček @spazef0rze www.michalspacek.cz
  30. 30. Michal Špaček @spazef0rze www.michalspacek.cz
  31. 31. mysql_set_charset() mysql_real_escape_string() Michal Špaček @spazef0rze www.michalspacek.cz
  32. 32. Nepoužívat addslashes() proti SQLIA Michal Špaček @spazef0rze www.michalspacek.cz
  33. 33. 2012 … Michal Špaček @spazef0rze www.michalspacek.cz
  34. 34. 2012 … 56 Michal Špaček @spazef0rze www.michalspacek.cz
  35. 35. 2011 … 51 2010 … 59 2009 … 82 Michal Špaček @spazef0rze www.michalspacek.cz
  36. 36. Cross-Site Port Attack (XSPA) Michal Špaček @spazef0rze www.michalspacek.cz
  37. 37. Michal Špaček @spazef0rze www.michalspacek.cz
  38. 38. Michal Špaček @spazef0rze www.michalspacek.cz
  39. 39. Distributed Denial-of-Service (DDoS) Michal Špaček @spazef0rze www.michalspacek.cz
  40. 40. Hashování hesel Nepoužívat MD5 Ani SHA-1 Michal Špaček @spazef0rze www.michalspacek.cz
  41. 41. Michal Špaček @spazef0rze www.michalspacek.cz
  42. 42. Řešení? SHA-512 a salt? hash_hmac() Michal Špaček @spazef0rze www.michalspacek.cz
  43. 43. oclHashcat md5($pass.$salt) md5($salt.$pass) sha1($pass.$salt) sha1($salt.$pass) Michal Špaček @spazef0rze www.michalspacek.cz
  44. 44. Lepší řešení? scrypt Michal Špaček @spazef0rze www.michalspacek.cz
  45. 45. bcrypt Blowfish hashing Michal Špaček @spazef0rze www.michalspacek.cz
  46. 46. crypt() salt=$2y$… password_hash() password_verify() Michal Špaček @spazef0rze www.michalspacek.cz
  47. 47. Michal Špaček @spazef0rze www.michalspacek.cz
  48. 48. Michal Špaček @spazef0rze www.michalspacek.cz
  49. 49. robots.txt Michal Špaček @spazef0rze www.michalspacek.cz
  50. 50. Michal Špaček @spazef0rze www.michalspacek.cz
  51. 51. /.svn/entries Michal Špaček @spazef0rze www.michalspacek.cz
  52. 52. http://hostname/.svn/text-base/index.php.svn-base Michal Špaček @spazef0rze www.michalspacek.cz
  53. 53. That's it. That's me. Michal Špaček www.michalspacek.cz @spazef0rze Přijďte na školení http://www.michalspacek.cz/skoleni
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×