Systemy internetowe wykład 1

Transkrypt

Systemy internetowe wykład 1
09.01.2017
Systemy internetowe
Wykład 5
Architektura WWW
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Architektura WWW
Serwer – to program, który:
• Obsługuje repozytorium dokumentów
• Udostępnia dokumenty klientom
Komunikacja:
protokół HTTP
Warstwa klienta HTTP
Warstwa serwera HTTP
Klient – to program użytkowy, który:
• Wysyła żądania pobrania dokumentów
• Wizualizuje pobrane dokumenty
• Obsługuje interakcje z użytkownikiem
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
1
09.01.2017
Obsługa użytkowników
Otwarcie p.
www.wp.pl/info.html
Wizualizacja
graficzna
Klient
HTTP
Żądanie
Odpowiedź
Serwer
HTTP
www.wp.pl
Zamknięcie p.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Klient HTTP
Program użytkowy odpowiadający m. in. za:
• inicjowanie połączeń HTTP z serwerem HTTP,
• wysyłanie żądań pobrania dokumentów,
• odbieranie dokumentów od serwera HTTP,
• wizualizację dokumentów,
• obsługę interakcji użytkownika końcowego z graficznym
interfejsem użytkownika zawartym w pobranym
dokumencie,
• szyfrowanie połączeń sieciowych z serwerami HTTP.
Przykłady: Firefox, Chrome, Opera, Edge
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
2
09.01.2017
Serwer HTTP (serwer WWW)
Program systemowy, nieprzerwanie pracujący,
Zadania podstawowe:
• nasłuch sieciowy w celu odbioru żądań od klientów HTTP,
• przekazanie żądanego dokumentu do klienta HTTP,
Zadania dodatkowe:
• rejestracja obsługiwanych żądań,
• uwierzytelnianie i kontrola dostępu użytkowników,
• szyfrowanie komunikacji sieciowej z klientem HTTP,
• automatyczny wybór odpowiedniej wersji językowej
dokumentu,
Przykłady: Apache, Jigsaw, Sun Java System Web Server.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Serwer Proxy
Serwer HTTP proxy – aplikacja pośrednicząca między
serwerem HTTP, a klientem HTTP.
Serwer HTTP proxy może:
• pełnić rolę zapory ogniowej
• pełnić rolę bufora dokumentów,
• umożliwiać korzystanie z zasobów sieci Internet
użytkownikom pracującym w sieci lokalnej.
Kategorie serwerów proxy:
• przeźroczyste (transparent HTTP proxy)
• nieprzeźroczyste (non-transparent HTTP proxy)
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
3
09.01.2017
Protokół HTTP
• HTTP - Hypertext Transfer Protocol,
• RFC 2616 - http://tools.ietf.org/html/rfc2616
• tekstowy protokół sieciowy (oparty na TCP),
• transport dokumentów udostępnianych przez serwery HTTP
(tekstowych i binarnych),
• port 80,
• model komunikacyjny klient-serwer,
• protokół ma charakter bezstanowy (niezależne
rozpatrywanie żądań; cookies)
• i bezsesyjny (osobne pobieranie dokumentów; persistent
connection i mechanizm sesji).
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Elementy Komunikatu HTTP
Elementy komunikatu HTTP:
• wiersz początkowy,
• zero lub wiele wierszy nagłówkowych,
• wolny wiersz,
• opcjonalne ciało komunikatu.
Wiersz początkowy
• żądanie:
GET /ścieżka/plik.html HTTP/1.0
• odpowiedź: HTTP/1.0 200 OK
404 (Not Found); 500 (Server Error) ......
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
4
09.01.2017
Elementy komunikatu HTTP cd.
Wiersze nagłówkowe:
• metadane opisujące żądanie/odpowiedź HTTP
• Nazwa-pola: wartość (User-Agent: Mozilla/5.0)
Ciało komunikatu:
• żądany dokument (odpowiedź HTTP)
• wartości parametrów/pliki wprowadzone przez użytkownika
• jeżeli komunikat ma ciało, to ma też wiersze nagłówkowe:
• Content-Type (format pliku, zgodny ze specyfikacją MIME)
• Content-Length (rozmiar dokumentu w bajtach)
MIME – RFC1521 – image/gif; text/css; application/zip .....
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Komunikat żądania
POST /pracownicy.html HTTP/1.1
User-Agent: Mozilla/5.0
Host: www.zut.pl:8888
Accept-Language: pl; q=0.9, en; q=0.6
Accept: text/html, text/xml; q=0.9; text/plain; q=0.7
Accept-Charset: utf-8; q=0.9, *; q=0.7
Keep-Alive: 200
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 63
imie=Marek&nazwisko=Prawi%F1ski&wiek=22+lata
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
5
09.01.2017
Komunikat odpowiedzi
HTTP/1.1 200 OK
Date: Fri, 09 Jun 2006 17:59:10 GMT
Server: Apache/1.0.0
Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73
Last-Modified: Fri, 09 Jun 2006 17:55:44 GMT
Keep-Alive: timeout=15, max=100
Connection: keep-alive
Content-Length: 200
Content-Type: text/html; charset=utf-8
<html> <body>
...
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Persistent Connection
HTTP/1.0:
• Jedno żądanie użytkownika – seria żądań HTTP.
• Jedno żądanie HTTP – jeden plik.
• Jedno połączenie – jedno żądanie.
HTTP/1.1 - Persistent Connections - umożliwienie klientowi
HTTP wysłania kolejnego żądania HTTP poprzez zestawione
już połączenie.
Zagrożenie atakami typu DoS :
• ograniczenie liczby żądań HTTP,
• oraz czasu bezczynności otwartego połączenia.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
6
09.01.2017
Rozkazy HTTP
• HEAD – klient otrzymuje wyłącznie wiersze nagłówkowe
odpowiedzi HTTP, bez załączonego ciała; pobranie
metadanych opisujących dokument (weryfikacja
poprawności adresów i łączy URL).
• POST - do żądania HTTP dołączone jest ciało, które
reprezentuje dane wysyłane przez klienta HTTP do serwera
HTTP (np. parametry, plik).
• GET – brak ciała żądania; parametry zostają przesłane w
adresie.
POST - ciało
GET – URL (nagłówek)
imie=Marek&nazwisko=Prawi%F1ski&wiek=22+lata
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Cookies (RFC6265)
Serwer:
• powołuje zmienną Cookie,
• przesyła ją do klienta.
Klient:
• przechowuje zmienną Cookie
• wysyła ją do serwera HTTP wraz z kolejnymi żądaniami.
Każda zmienna Cookie posiada:
• nazwę,
• wartość,
• czas życia (jak długo klient powinien ją przechowywać),
• zasięg (dziedzinę adresów URL, którym zmienna ta
będzie udostępniana).
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
7
09.01.2017
Wady ciasteczek
Są do dane tymczasowe:
• wygasają automatycznie po pewnym czasie
• mogą być usunięte lub zablokowane przez użytkownika
Identyfikują przeglądarkę, a nie użytkownika
Problemy z bezpieczeństwem
• nie są domyślnie szyfrowane (można to zmienić)
• są wielokrotnie przesyłane do serwera.
Dyrektywa Unii Europejskiej – 2012r.
Ustawa Prawo telekomunikacyjne – zmiana w 2013r.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Przesyłanie cookies
Żądanie HTTP
Odpowiedź HTTP
Set-Cookie: imie =Marek
Żądanie HTTP
Cookie: imie=Marek
imie=Marek
Żądanie HTTP
Cookie: imie=Marek
........
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
8
09.01.2017
Protokół HTTPS (1)
Wadą protokołu HTTP jest brak zabezpieczenia poufności
komunikacji pomiędzy klientem HTTP a serwerem HTTP.
Protokół HTTPS – szyfrowanie komunikacji.
Protokół HTTPS wykorzystuje protokół:
• SSL (Secure Socket Layer)
• Od 1999 TLS (Transport Layer Security)
SSL (TSL) wykorzystuje algorytm szyfrowania:
• symetrycznego,
• asymetrycznego (z kluczem publicznym).
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Protokół HTTPS (2)
Uwierzytelnianie serwera:
• Podczas nawiązywania połączenia HTTPS klient HTTP
otrzymuje od serwera HTTP certyfikat klucza
publicznego, na podstawie którego potwierdzana jest
tożsamość serwera.
• Aby certyfikat został uznany przez klienta HTTP,
wystawiający go urząd certyfikacyjny powinien zostać
uprzednio zarejestrowany w aplikacji klienta HTTP.
• Certyfikat klucza publicznego jest przyznawany przez tzw.
Urzędy Certyfikacji (CA - Cerfificate Authority).
• Zarządca domeny wysyła Certificate Signing Request
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
9
09.01.2017
Protokół HTTPS (3)
Uwierzytelnianie użytkownika końcowego - serwer HTTP
żąda od klienta HTTP przesłania certyfikatu użytkownika.
Żeby certyfikat klienta mógł zostać przesłany do serwera, musi
od zostać uprzednio zarejestrowany w aplikacji klienta HTTP.
Połączenie HTTPS przebiega w dwóch etapach:
• Handshake - seria komunikatów prowadząca do
zestawienia bezpiecznego połączenia i ustalenia kluczy
szyfrujących
• etap faktycznej wymiany zaszyfrowanych danych.
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
Handshake
1
2
3
Weryfikacja
certyfikatu
4
6
ServerHello; Certificate;
ServerKeyExchange;
ServerHelloDone
ClientKeyExchange
ChangeCipherSpec;
Finished
ChangeCipherSpec;
Finished
5
Generowanie
klucza
ClientHello
7
5
Generowanie
klucza
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
10
09.01.2017
Dziękuję za
uwagę
West Pomeranian University of Technology, Szczecin; Faculty of Computer Science and Information Technology
11

Podobne dokumenty