Programowanie w Internecie

Podobne dokumenty
Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

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

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

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

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Technologie internetowe

Kurs WWW. Paweł Rajba

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

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

The OWASP Foundation Session Management. Sławomir Rozbicki.

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP


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

I.Wojnicki, Tech.Inter.

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4 Wojciech Kaczmarski

Przykład programu w PHP. Wykład10.PHP ciągdalszy,str.1

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

PSI Protokół HTTP + wstęp do przedmiotu. Kraków, 10 październik 2014 mgr Piotr Rytko Wydział Matematyki i Informatyki UJ

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

Programowanie Sieciowe 2 Protokoły komunikacyjne: HTTP

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

Serwery WWW. Konfiguracja. Zadania serwera. NCSA httpd 1.5

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

Uwierzytelnianie HTTP

Programowanie w Internecie

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

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

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

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

Protokół HTTP (2) I) Wprowadzenie. II) Użyte narzędzia: III) Kolejność działań

Gatesms.eu Mobilne Rozwiązania dla biznesu

Raport z Testów Penetracyjnych XXXXX

Internetowe bazy danych

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Systemy internetowe Wykład 3 PHP

Apache serwer WWW (część 2) Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Architektura aplikacji sieciowych. Architektura klient-serwer

Orange Send MMS. Autoryzacja. Metoda HTTP. Parametry wywołania. API wyślij MMS dostarcza wiadomości MMS. Basic POST

Specyfikacja techniczna. mprofi Interfejs API

Języki programowania wysokiego poziomu WWW

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

I.Wojnicki, Tech.Inter.

W poprzednim odcinku poznaliśmy: W poprzednim odcinku, cd.: W dzisiejszym odcinku. Apache serwer WWW (część 2)

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

FTP co to takiego? FTP File Transfer Protocol (Protokół Przesyłania Plików) RFC 114,959

1.1 Podłączenie Montaż Biurko Montaż naścienny... 4

LIGHTTPD szybkość i prostota. Robert Partyka

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

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Protokół HTTP - przegląd

Jednym z najważniejszych zagadnień, z którym może się zetknąć twórca

TIN Techniki Internetowe zima

HTTP, CGI, Perl. HTTP HyperText Transfer Protocol. CGI Common Gateway Interface. Perl Practical Extraction and Report Language

Cookie Policy. 1. Informacje ogólne.

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Linux -- u mnie działa!

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Protokół FTP Protokół FTP

Aplikacje www laboratorium

XML-RPC: Zdalne wykonywanie procedur

Healthix Consent Web-Service Specification

I.Wojnicki, Tech.Inter.

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

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Cemarol Sp. z o.o. Polityka prywatności (pliki cookies) 1. Informacje ogólne.

Wprowadzenie do Internetu Zajęcia 5

Wybrane działy Informatyki Stosowanej

Serwis realizuje funkcje pozyskiwania informacji o użytkownikach i ich zachowaniach w następujący sposób:

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Sprawozdanie nr 4. Ewa Wojtanowska

PHP. i komunikacja klient-serwer PAWEŁ RAJBA

Protokół HTTP wprowadzenie. Protokół HTTP podstawowe cechy. Protokół HTTP podstawowe cechy. Protokół HTTP. Podstawowy protokół World Wide Web

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Sieciowe systemy informacyjne

TradeWatch API v

Sprawozdanie Laboratorium 4

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

Zmienne i stałe w PHP

II. PRZETWARZANIE DANYCH OSOBOWYCH:

Polityka prywatności serwisu

Kurs rozszerzony języka Python

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Protokół DHCP. DHCP Dynamic Host Configuration Protocol

API System Partnerski

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

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

Formularze Pobierają dane od użytkownika strony i wysyłają je do przetworzenia na serwerze (gdzie potrzebne są skrypty,któredaneprzetworzą najczęściej

Internetowe bazy danych

Aplikacje WWW. Wykład 12. Serwery HTTP. wykład prowadzi: Maciej Zakrzewicz. Serwery HTTP

Aplikacje internetowe - laboratorium

Serwery aplikacji. dr Radosław Matusik. radmat

Wybrane działy Informatyki Stosowanej

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

DOKUMENTACJA INTERFEJSU API - HTTPS

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Transkrypt:

mariusz@math.uwb.edu.pl http://math.uwb.edu.pl/~mariusz Uniwersytet w Białymstoku 2018/2019

Serwer HTTP Najbardziej popularne serwery HTTP: Apache nginx Microsoft IIS Lite Speed GWS Google Statystyki Netcraft: February 2019 Web Server Survey W 3 Techs: Usage of web servers for websites, 14 March 2019 Porównanie: Wikipedia: Comparison of web server software

Apache Modularna budowa (Loadable Dynamic Modules) (w tym PHP, Perl) Różne tryby przetwarzania żądań (Multiple Request Processing) Skalowalność Automatyczne indeksowanie, negocjacja zawartości Obsługa.htaccess Obsługa SSL/TLS Wirtualne hosty (według nazwy lub adresu IP) Rozbudowana autentykacja, autoryzacja i kontrola dostępu Kompresja i dekompresja zawartości Obsługa CGI

Ciasteczka Protokół HTTP jest bezstanowy, serwer nie zachowuje żadnej informacji o wcześniejszych żądaniach klienta Mechanizm cookies został wprowadzony przez Netscape by utrzymywać stan nawiązanego połączenia HTTP Użytkownik może wyłączyć mechanizm cookies w przeglądarce

Ciasteczka odpowiedź serwera HTTP Set-Cookie: <name>=<value>; Expires=<date>; Max-Age=<age>; Domain=<domain>; Path=<path>; Secure; HttpOnly <name> nazwa ciasteczka <value> wartość ciasteczka Expires data i czas kiedy ciasteczko wygasa, brak oznacza, że ciasteczko wygasa z końcem sesji, czyli po zamknięciu klienta Max-Age czas życia ciasteczka określony w sekundach, wartość ma wyższy priorytet od Expires Domain określa hosty, do których ciasteczko zostanie wysłane, domyślnie host bieżącego dokumentu Path określa sieżkę jaka ma być podana w URL żądania, aby ciasteczko zostało wysłane Secure ciasteczko będzie wysłane wyłącznie w protokole HTTPS HttpOnly ciasteczko nie jest dostępne dla JavaScript

Ciasteczka żądanie klienta HTTP Cookie: <name>=<value>; <name> nazwa ciasteczka <value> wartość ciasteczka

Ciasteczka przykłady Żądanie klienta GET /~mariusz/pwi/cookies.php HTTP/1.1 Host: math.uwb.edu.pl Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Odpowiedź serwera (tylko nagłówki) HTTP/1.1 200 OK Date: Mon, 11 Mar 2019 21:38:59 GMT Set-Cookie: ciasteczko=pychota; expires=mon, 11-Mar-2019 21:43:59 GMT; Content-Length: 60 Content-Type: text/html; charset=iso-8859-2 Kolejne żądanie klienta GET /~mariusz/pwi/cookies.php HTTP/1.1 Host: math.uwb.edu.pl Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: ciasteczko=pychota

Ciasteczka dla programistów PHP bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = FALSE [, bool $httponly = FALSE ]]]]]] ) bool setcookie ( string $name [, string $value = "" [, array $options = [] ]] ) JavaScript zapis document.cookie = "ciasteczko=pychota; Max-Age=300"; document.cookie = "session-id=1234567; Max-Age=600"; odczyt alert(document.cookie) --> ciasteczko=pychota;session-id=1234567

Ciasteczka a Web Storage Ciasteczka Web Storage Implementacja HTTP JavaScript Realizacja klient-serwer klient Dozwolony rozmiar 4KB 5MB Typy danych klucz-wartość tablice asocjacyjne

Sesje Sesja HTTP seria powiązanych ze sobą żądań klienta i odpowiedzi serwera. Podstawą sesji jest identyfikacja klienta przez serwer. Identyfikacja klienta może być realizowana na 3 różne sposoby: Ciasteczka Set-Cookie: SID=1234567 Nadpisywanie URL (URL rewriting) http://example.org/shopping.php?sid=1234567 Ukryte pola formularza HTML <form method="post" action="url"> <input type="hidden" name="sid" value="1234567">... <input type="submit"> </form>

Sesje w PHP Parametry - ciasteczka ini_set( session.use_cookies, 1); ini_set( session.use_only_cookies, 1); Parametry - nadpisywanie URL ini_set( session.use_trans_sid, 1); Zarządzanie sesją session_name( SessionID ); session_id(rand(1000, 2000)); session_start(); session_create_id( PFX ); session_get_cookie_params(); session_set_cookie_params(600, warehouse/sale, example.org ); session_status(); session_destroy(); echo SID; $_SESSION[ name ] = Yellow Submarine ; $_SESSION[ object ] = new SessionManagement(SID); echo $_SESSION[ name ];

Autentykacja, autoryzacja, kontrola dostępu Autentykacja Sprawdzenie, czy użytkownik jest tym za kogo się podaje. Zwykle tożsamość użytkownika ustala się na podstawie jego nazwy i hasła. Autoryzacja Poprzedzona jest autentykacją. Określenie, czy dany użytkownik ma uprawnienia do żądanego zasobu. Różni użytkownicy mogę mieć odmienne prawa do tego samego zasobu. Kontrola dostępu Oparta wyłącznie na autentykacji to autoryzacja. Zwykle zawiera wiele innych kryteriów, np.: adres IP, rodzaj przeglądarki, porę dnia itp.

Basic Authentication Mechanizm autentykacji na poziomie HTTP Mechanizm wbudowany do serwera Apache Użytkownik jest identyfikowany na podstawie jego nazwy i hasła Aby ułatwić zarządzania możliwe jest grupowanie użytkowników Zakodowane hasła przechowywane są w plikach na serwerze Nazwa użytkownika i hasło przesyłane są jako tekst w kodzie Base64 Łatwo można odczytać przekazywane siecią hasło

Basic Authentication - konfiguracja Tworzymy plik z hasłami i dodajemy użytkownika math$ htpasswd -c /export/home/mariusz/.pwipasswd admin New password: Re-type new password: Adding password for user admin Hasła w utworzonym pliku są zakodowane math$ cat /export/home/mariusz/.pwipasswd admin:$apr1$uaw6kljz$czqb9o5cc4axeurt11ahk0 W chronionym katalogu tworzymy plik.htaccess AuthType Basic AuthName "" AuthUserFile /export/home/mariusz/.pwipasswd require user admin satisfy all

Basic Authentication - jak to działa? Żądanie klienta GET /~mariusz/pwi/sekret/ HTTP/1.1 Host: math.uwb.edu.pl User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Odpowiedź serwera (tylko nagłówki) HTTP/1.1 401 Unauthorized Date: Wed, 13 Mar 2019 08:12:22 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.35 OpenSSL/1.0.2n WWW-Authenticate: Basic realm="" Kolejne żądanie klienta GET /~mariusz/pwi/sekret/ HTTP/1.1 Host: math.uwb.edu.pl User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Authorization: Basic YWRtaW46YWJjMTIz

Digest Authentication Mechanizm autentykacji na poziomie HTTP Mechanizm wbudowany do serwera Apache Użytkownik jest identyfikowany na podstawie jego nazwy i hasła Aby ułatwić zarządzania możliwe jest grupowanie użytkowników Zakodowane hasła przechowywane są w plikach na serwerze Nazwa użytkownika i hasło przesyłane są jako MD5 hash Odczytanie przekazywanego siecią hasła jest niemożliwe

Digest Authentication - konfiguracja Tworzymy plik z hasłami i dodajemy użytkownika math$ htdigest -c /export/home/mariusz/.pwidigest \ "" admin Adding password for admin in realm PWI. New password: Re-type new password: Hasła w utworzonym pliku są zakodowane math$ cat /export/home/mariusz/.pwidigest admin:pwi:2d4d40bb69aeb7b37ce02178c0a5e1d4 W chronionym katalogu tworzymy plik.htaccess AuthType Digest AuthName "" AuthUserFile /export/home/mariusz/.pwidigest require user admin satisfy all

Digest Authentication - jak to działa? Żądanie klienta GET /~mariusz/pwi/sekret/ HTTP/1.1 Host: math.uwb.edu.pl User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Odpowiedź serwera (tylko nagłówki) HTTP/1.1 401 Unauthorized Date: Wed, 13 Mar 2019 09:03:53 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.35 OpenSSL/1.0.2n WWW-Authenticate: Digest realm="", nonce="5f7affadbqa=df1b8a23925ca52c5325c1f63274e9f40dfe7b79", algorithm=md5, qop="auth" Kolejne żądanie klienta GET /~mariusz/pwi/sekret/ HTTP/1.1 Host: math.uwb.edu.pl User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Authorization: Digest username="admin", realm="", nonce="5f7affadbqa=df1b8a23925ca52c5325c1f63274e9f40dfe7b79", uri="/~mariusz/pwi/sekret/", algorithm=md5, response="cafe8f2f33c3858e019d42b66ed91419", qop=auth, nc=00000001, cnonce="deed038837005329"

FIN ACK