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



Podobne dokumenty
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

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

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

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

I.Wojnicki, Tech.Inter.

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

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

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

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

Ćwiczenie: JavaScript Cookies (3x45 minut)

Serwery aplikacji. dr Radosław Matusik. radmat

Sprawozdanie nr 4. Ewa Wojtanowska

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

Programowanie w Internecie

The OWASP Foundation Session Management. Sławomir Rozbicki.

Kurs WWW. Paweł Rajba

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

Systemy internetowe Wykład 3 PHP

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

Zmienne i stałe w PHP

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

Aplikacje WWW - laboratorium

Internetowe bazy danych

Aplikacje internetowe - laboratorium

Internetowe bazy danych

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

Stosowanie ciasteczek (cookies)

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

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

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

II. RODZAJE PLIKÓW COOKIES

Smarty PHP. Leksykon kieszonkowy

Backend Administratora

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

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

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

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

Polityka cookies w serwisie internetowym

PHP. i komunikacja klient-serwer PAWEŁ RAJBA

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

Zajęcia 10 obsługa formularzy w PHP

Wprowadzenie do Internetu Zajęcia 5

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

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

Bazy Danych i Usługi Sieciowe

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

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

Baza danych do przechowywania użytkowników

PHP: bloki kodu, tablice, obiekty i formularze

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

O autorze Wprowadzenie...13

Bezpieczeństwo systemów komputerowych

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

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

Aktualizacja SMSFall v Data publikacji:

Wstęp. Ale po co? Implementacja

6. Bezpieczeństwo przy współpracy z bazami danych

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

Cookie Policy. 1. Informacje ogólne.

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

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

Dokumentacja SMS przez FTP

Aplikacje WWW - laboratorium

Zasady Wykorzystywania Plików Cookies

Konfiguracja programu MS Outlook 2007 dla poczty w hostingu Sprint Data Center

Sesje i logowanie. 1. Wprowadzenie

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

4. Podstawowa konfiguracja

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

Specyfikacja techniczna. mprofi Interfejs API

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

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs.

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

Polityka prywatności

FORMULARZE. G. Przęczek

Certyfikat. 1 Jak zbieramy dane?

Wykorzystywanie plików cookies

Wysyłanie pliku na serwer. Plik na serwerze.

Sesje - Podstawy PHP. Sesje. Artykuł pobrano ze strony eioba.pl. Wprowadzenie do sesji. Prosta autoryzacja użytkowników

Polityka prywatności serwisu

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

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

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

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

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Sieci komputerowe i bazy danych

wersja 1.0 ośrodek komputerowy uj cm ul. mikołaja kopernika 7e, Kraków tel

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

ZMIENNE. Podstawy PHP

, NO 556 NATHAN ROAD, MONGKOK, KOWLOON, HONG KONG. KRS: o

Instrukcja konfiguracji funkcji skanowania

Sprawozdanie Laboratorium 4

Polityka prywatności. 1. Informacje ogólne.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Transkrypt:

Sesje i ciasteczka

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do śledzenia użytkownika podczas jednej sesji na stronie internetowej (logowanie, koszyk zakupowy itp.). Mechanizm sesji w PHP jest zaimplementowany przez zaszyfrowany, losowy identyfikator sesji (SID). Może on być przechowywany w komputerze klienta w postaci pliku cookie lub przekazywany przez adres strony. Na serwerze są przechowywane zmienne sesji, czyli takie, które są powiązane z określoną sesją danego użytkownika i przez cały czas jej trwania można do nich uzyskać dostęp.

Ciasteczka Ciasteczko (ang. cookie) to niewielki zestaw informacji, które są zapisywane na komputerze klienta najczęściej w formie pliki tekstowego na dysku twardym. Aby utworzyć cookie na komputerze użytkownika wystarczy wysłać następujący nagłówek HTTP: Set-Cookie: NAZWA=WARTOSC; [expires=data;] [path=sciezka;] [domain=nazwa_domeny;] [secure] Ciasteczko powinno być przesłane przed innymi nagłówkami.

Ciasteczka c.d. nazwa=wartość - Wartość ta jest jedynym wymaganym atrybutem przy wysyłaniu ciasteczka. Składa się z dowolnych znaków z wyjątkiem średników, przecinków, białych spacji i ukośników (/). Jeśli zajdzie potrzeba ich użycia, najczęściej koduje się je w formacie odpowiednim dla URL (%XX), gdzie XX to kod ASCI znaku (np. %2F to zakodowana postać ukośnika, a %20 spacji). expires=data - Atrybut expires informuje przeglądarkę o dacie wygaśnięcia danego ciasteczka. Zostanie ono usunięte z dysku, gdy jego data ważności zostanie przekroczona. Jeśli nie podano daty wygaśnięcia, to ciasteczko zostanie skanowane na koniec danej sesji. path i domain - Określają dla jakiej ścieżki i dla jakiej domeny ważne jest dane ciasteczko. secure - Ten parametr nie posiada wartości. Jeśli zostanie podany, to ciasteczko będzie widoczne (wysłane) tylko wtedy gdy połączenie będzie szyfrowane

Ciasteczka c.d Właściwości ciasteczek: Ciasteczka o tej samej nazwie ale o innych ścieżkach będą nadpisywane. W celu skasowania należy wysłać ciasteczko o takiej samej nazwie i czasie wygaśnięcia z minioną datą. Możliwe jest wysyłanie kilku ciasteczek w jednym nagłówku (poprzez kilka atrybutów Set-Cookie). Istnieją limity przy zapisywaniu ciasteczek na dysku (po ich przekroczeniu przeglądarka zwykle usuwa starsze ciasteczka). maksymalna liczba ciasteczek: 300. maksymalna wielkość ciasteczka: 4 kilobajty. maksymalna liczba ciasteczek z jednego serwera lub z jednej ścieżki: 20. Należy uważać z obsługą ciasteczek jeśli występuje również serwer proxy.

Tworzenie ciasteczek w PHP Ciasteczka z poziomu PHP mogą zostać ustawione (stworzone) za pomocą funkcji setcookie: bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) gdzie httponly ciasteczka będą dostępne tylko dla protokołu http. Żadne języki skryptowe nie mają do nich dostępu. Kiedy do serwera przekazywane jest żądanie GET, przeglądarka w pierwszej kolejności szuka ciasteczka przechowywanego lokalnie i jeśli znajdzie odpowiednie to przekazuje jego wartość do serwera.

Cookie i sesje PHP domyślnie stosuje ciasteczka w sesji. Gdy to możliwe, w ciasteczku będzie przechowywany identyfikator sesji. Można również dołączyć identyfikator sesji do adresu URL. Przez ustawienie na serwerze dyrektywy session. use_trans_sid ta metoda staje się metodą domyślną, ale nie jest do zalecane bo obniża poziom bezpieczeństwa. Identyfikator sesji przechowywany jest w stałej SID. Można go przekazywać dalej w linkach dodając go na końcu łącza: <A HREF="link.php?<?php echo (SID);?>">

Etapy sesji Sesja składa się z 4 podstawowych etapów: 1. Rozpoczynanie sesji. 2. Zgłaszanie zmiennych sesji. 3. Korzystanie ze zmiennych sesji. 4. Usuwanie zmiennych i niszczenie sesji. Rozpoczynanie sesji można zrealizować na 2 sposoby: Używając funkcji session_start(); Sprawdza ona istnienie identyfikatora sesji i jeśli on istnieje funkcja pobierze zmienne sesji by można było z nich korzystać. Jeśli identyfikator nie istnieje to zostanie utworzony nowy wraz z tablicą sesji $_SESSION. Funkcja session_start() powinna być wywoływana na początku każdego skryptu korzystającego z sesji. Konfiguracja PHP (za pomocą opcji session.autostart) by automatycznie rozpoczynał sesji, gdy ktoś odwiedza daną stronę. Wówczas jednak nie można przechowywać obiektów w sesji!

Zgłaszanie zmiennych sesji Zmienne sesji są przechowywane w tablicy superglobalnej $_SESSION; Aby utworzyć zmienną sesji należy ustawić w tej tablicy żądany element np. $_SESSION[ nick ] = 5; Utworzona zmienna będzie dostępna do końca sesji, chyba że zostanie wcześniej usunięte ręcznie. Sesja może również wygasnąć automatycznie poprzez działanie dyrektywy session.gc_maxlifetime.

Stosowanie i niszczenie zmiennych sesji Aby uzyskać dostęp do zmiennej sesyjnej korzystamy znowu z tablicy $_SESSION np. $war1 = $_SESSION[ nick ]; Aby bezpośrednio usunąć zmienną sesji wykorzystujemy funkcję unset np. unset($_session[ nick ]); Aby usunąć wszystkie zmienne sesji należy wykonać polecenie: $_SESSION=array(); Gdy wykonano wszystkie działania w sesji należy usunąć wszystkie zmienne po czym wywołać session_destroy() by usunąć identyfikator sesji.

Sesje czy bezpieczne? Zależy Wireshark i ARP Spoofing I mamy Session HiJacked

Gotowy przykład 1. <?php 2. session_start(); 3. if(!isset($_session['licznik'])) { 4. $_SESSION['licznik'] = 0; } 5. $_SESSION['licznik']++; 6. echo 'Odwiedziłeś już '.$_SESSION['licznik'].' podstron!'; 7.?>

Proste logowanie z bazą MySQL Kod inspirowany WikiBooksami: http://pl.wikibooks.org/wiki/php/sesje

Proste logowanie z bazą MySQL

Proste logowanie z bazą MySQL

Proste logowanie z bazą MySQL

Proste logowanie z bazą MySQL

Do poczytania: Session Fixation 1. <?php session_start(); 2. if (!isset($_session['inicjuj'])) { 1. session_regenerate_id(); 2. $_SESSION['inicjuj'] = true; 3. }?>

Do poczytania: Session Hijacking 1. <?php session_start(); 2. if (!isset($_session['inicjuj'])) { 1. session_regenerate_id(); 2. $_SESSION['inicjuj'] = true; 3. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; } 3. if($_session['ip']!= $_SERVER['REMOTE_ADDR']) { 4. die('proba przejecia sesji udaremniona!'); 5. }?>