ajax. bezpieczne aplikacje internetowe pełna wersja.pdf

(7705 KB) Pobierz
1245134705.005.png
6.
Zabezpieczanie usług sieciowych .............................................................................. 171
Ogólne informacje o usługach sieciowych
172
Usługi sieciowe a bezpieczeństwo
183
Web Service Security
188
7.
Tworzenie bezpiecznych interfejsów programowania ............................................ 191
Tworzenie własnych interfejsów API
192
Warunki wstępne
197
Warunki końcowe
197
Niezmienniki
197
Zagadnienia bezpieczeństwa
198
Usługi sieciowe w architekturze REST
201
8.
Aplikacje typu mashup ..............................................................................................209
Aplikacje internetowe i otwarte internetowe interfejsy API
211
Dzika Web 2.0
212
Aplikacje typu mashup a bezpieczeństwo
214
Otwarte kontra bezpieczne
218
Bezpieczna przytulanka
219
Studium przypadków
222
Skorowidz ............................................................................................................................. 233
6 |
Spis treści
ROZDZIAŁ 2.
Bezpieczeństwo aplikacji internetowych
W rozdziale 1. opisano, jak powstała Sieć oraz w jaki sposób działa. Ważne jest, by zapamiętać,
że nowoczesna Sieć bazuje na grupie abstrakcji programowych oraz że tworzenie godnych
zaufania i bezpiecznych aplikacji internetowych wciąż wymaga od programistów znajomości
podstawowego protokołu i infrastruktury.
W niniejszym rozdziale dokładniej poznasz zasady działania mechanizmów zabezpieczeń
oraz możliwości ich zastosowania w aplikacjach internetowych. Jeśli aplikacja działa w Inter-
necie, to znajduje się w pierwszej linii Twojej firmowej lub domowej sieci. Można by ją po-
równać z drzwiami do świata zewnętrznego, przez które odwiedzający mogą wejść i spraw-
dzić, co masz do zaoferowania. Twoja aplikacja musi zatem być bezpieczna, a Ty sam musisz
mieć świadomość zagrożeń, na jakie naraża ona Twoją sieć.
Zagadnienia podstawowe
Wyobraź sobie strażnika przechadzającego się nocą po słabo oświetlonych korytarzach jakie-
goś biurowca. Kiedy strażnik wchodzi do kolejnych pomieszczeń, oświetla je latarką, szuka-
jąc wszystkiego, co mogłoby się wydać podejrzane, po czym zamyka drzwi i idzie dalej.
Strażnik wykonuje te czynności każdej nocy, zapewniając dzięki temu bezpieczeństwo bu-
dynku i znajdującym się w nim biur.
Cóż, aplikacje internetowe zazwyczaj nie mają takich strażników. Nie ma nikogo, kto mógłby
zabezpieczyć je przed potencjalnymi włamywaczami.
Potrzeba wbudowania zabezpieczeń
A zatem co można zrobić? Pierwsze, co mogą zrobić programiści, to zauważyć konieczność
wyposażenia aplikacji w mechanizmy zabezpieczeń. Oprócz tego należy się upewnić, co tak
naprawdę wymaga ochrony. Gdzie aplikacja zaczyna się, a gdzie kończy? Jaka jest jej po-
wierzchnia? Jeśli Twoja aplikacja przypomina typowe aplikacje internetowe, to składa się
z trzech podstawowych elementów, które opiszę w dalszej części rozdziału.
41
1245134705.006.png
 
Oczekuj niespodzianek
Alarm! Internetowi napastnicy próbują włamać się do naszej aplikacji. Używają aplikacji
w nieprzewidziany sposób, by doprowadzić do wystąpienia błędów i innych sytuacji, które
mogliby wykorzystać do swoich celów. Sytuacji, których nikt nie przewidział, niemal zawsze
stanowią zagrożenie bezpieczeństwa.
Czy pamiętasz strażnika? Patroluje on budynek, szukając w nim wszystkiego, co odbiega od
normy. Doskonale wie, że jeśli coś znajdzie się nie na swoim miejscu, to na pewno coś musiało
do tego doprowadzić. Oczywiście inteligentny włamywacz czeka do momentu, gdy strażnik
sprawdzi wszystkie pomieszczenia, i zaatakuje dopiero później .
Podmioty
Podmioty to wszyscy używający aplikacji. Oczywiście, najpopularniejszymi podmiotami będą
zwyczajni użytkownicy (czyli osoby odwiedzające aplikację), jednak mogą to także być inne
programy korzystające z usług sieciowych lub udostępnionego, zewnętrznego interfejsu pro-
gramowania (API). Niezależnie od rodzaju podmioty zawsze są „bytami” zewnętrznymi ko-
rzystającymi z systemu.
Wyobraźmy sobie, że dysponujemy witryną WWW zajmującą się sprzedawaniem różnego
typu kontrolek do aplikacji. Witryna implementuje zwyczajny koszyk zakupów oraz usługę
sieciową.
Takiej aplikacji mogą używać dwa odrębne typy podmiotów:
Klienci :
Czyli osoby, które zajrzały na witrynę, by kupić któryś z oferowanych produktów, uży-
wając przy tym koszyka do zakupów.
Partnerzy :
Programy korzystające z usług sieciowych do zarządzania produktami i wchodzące
w skład większej, złożonej aplikacji.
Gdyby coś miało pójść nie tak, chcielibyśmy wiedzieć, co się zdarzyło i kto doprowadził do
wystąpienia problemów. Wyobraź sobie dowolny film kryminalny — podmiotami byliby
wszyscy objęci dochodzeniem.
Obiekty
Obiektami nazywamy wszelkie zasoby aplikacji. Zazwyczaj będą to należące do niej dane,
lecz mogą to być także pliki, połączenia, usługi oraz wszelkie inne rzeczy, które mają dla niej
jakąś wartość lub które do niej należą.
W naszym przykładzie obiektami będą takie rzeczy, jak prywatne dane klientów, dane do-
stawców, firmowe dane zgromadzone w bazie danych oraz same sprzedawane kontrolki.
Innymi słowy, obiekty te można by porównać do przeróżnych cennych drobiazgów prze-
chowywanych przez ojca w kredensie.
Przyglądając się tym wszystkim obiektom i danym, należy zadać sobie pytanie, czy trzeba
zachować ich poufność? Czy aplikacja powinna je w jakiś sposób zabezpieczać? Jakie będą
konsekwencje dla Ciebie lub firmy, jeśli te dane pojawią się nagle wystawione na sprzedaż
na jakiejś witrynie w byłym Związku Radzieckim?
42 | Rozdział 2. Bezpieczeństwo aplikacji internetowych
Operacje
Operacje wiążą ze sobą podmioty i obiekty. To rzeczy, które aplikacja może wykonywać.
Operacje zapewniają podmiotom dostęp do obiektów (a mówiąc precyzyjniej, podmioty uży-
wają operacji, by pobierać obiekty i manipulować nimi).
W naszej przykładowej witrynie operacjami dostępnymi dla klientów mogłyby być:
dodanie wybranej kontrolki do koszyka z zakupami,
usunięcie kontrolki z koszyka,
zamówienie wybranych kontrolek,
przeglądanie katalogu.
Podobnie usługa używana przez partnerów mogłaby udostępniać następujące operacje:
wyszukiwanie kontrolek,
zakup kontrolek.
Wszystkie trzy wymienione wcześniej podstawowe elementy aplikacji — podmioty, obiekty
oraz operacje (przedstawione na rysunku 2.1) — określają wspólnie powierzchnię aplikacji.
Rysunek 2.1. Podmioty, obiekty oraz operacje
Powierzchnia
Każdy użytkownik dodany do systemu, każda operacja wykonywana przez aplikację oraz
każdy używany przez nią zasób zwiększają powierzchnię aplikacji. A zatem, wziąwszy pod
uwagę zagadnienia bezpieczeństwa, należy to sobie uświadomić i ograniczyć możliwości
aplikacji jedynie do tych, które są jej absolutnie niezbędne.
Zagadnienia podstawowe | 43
1245134705.007.png 1245134705.001.png 1245134705.002.png 1245134705.003.png 1245134705.004.png
 
Zgłoś jeśli naruszono regulamin