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



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

Zabezpieczenia serwerów internetowych. Jakub Tomaszewski Zespół Bezpieczeństwa Poznańskie Centrum Superkomputerowo Sieciowe

Zespół Bezpieczeństwa PCSS. 36. Spotkanie Poznańskiej Grupy.NET

Poznańskie Centrum Superkomputerowo - Sieciowe

Wdrożenie modułu płatności eservice. dla systemu Magento

Paweł Cieśla. Dokumentacja projektu

Bezpieczeństwo aplikacji PHP hostowanych w środowisku. Windows. Gerard Frankowski, PCSS

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Tomasz Nowocień, Zespół. Bezpieczeństwa PCSS

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

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

Internetowe bazy danych

Zabezpieczanie platformy Windows Server 2003

Kim jesteśmy? PCSS i MIC. Paweł Berus, Zespół Bezpieczeństwa PCSS

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Język SQL, zajęcia nr 1

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

Projektowanie systemów baz danych

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Baza danych do przechowywania użytkowników

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wymagane jest podłączenie serwera do Internetu (konieczne do zdalnego dostępu).

REFERAT O PRACY DYPLOMOWEJ

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Wprowadzenie do Doctrine ORM

Projektowani Systemów Inf.

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Zaawansowane aplikacje internetowe - laboratorium

Bezpieczne udostępnianie usług www. BłaŜej Miga Zespół Bezpieczeństwa PCSS

Aplikacje WWW - laboratorium

Aplikacje internetowe - laboratorium

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

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

Tomasz Greszata - Koszalin

Aktualny stan i plany rozwojowe

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

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

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

Autor: Joanna Karwowska

Win Admin Monitor Instrukcja Obsługi

Część I Rozpoczęcie pracy z usługami Reporting Services

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

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

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Zabezpieczanie platformy Windows Server 2003

Program kadrowo płacowy - wersja wielodostępna z bazą danych Oracle SQL Server 8 lub 9

Aplikacje internetowe - laboratorium

Liczniki odwiedzin. Licznik odwiedzin na plikach

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Mechanizmy dostępu do bazy danych Palladion / Ulisses. I. Uwierzytelnianie i przyznawanie uprawnień dostępu do aplikacji Palladion

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

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

Usługi ze wsparciem Centrum Innowacji Microsoft. Jerzy Mikołajczak, Marek Zawadzki

Aplikacje WWW - laboratorium

Połączenie AutoCad'a z bazą danych

INFRA. System Connector. Opis wdrożenia systemu

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

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

Dokumentacja smsapi wersja 1.4

Kancelaria Prawna.WEB - POMOC

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

Ćwiczenia 2 IBM DB2 Data Studio

ZagroŜenia w sieci. Tomasz Nowocień, PCSS

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Sprawozdanie nr 4. Ewa Wojtanowska

Tuning SQL Server dla serwerów WWW

Aplikacje www laboratorium

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

F.W. KCSoft Kazimierz Czarnecki NIP: REGON: tel

Internetowe bazy danych

OCHRONA PRZED RANSOMWARE

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Procedury techniczne modułu Forte Kontroling. Środowisko pracy programu i elementy konfiguracji

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Instrukcja instalacji systemu

Zrąb webowy dla perfekcjonistów z terminami. autor: Kamil Adamczyk

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Konfiguracja modułu alarmowania w oprogramowaniu InTouch 7.11

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

Program kadrowo płacowy - wersja wielodostępna z bazą danych Oracle SQL Server 10g

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

OPROGRAMOWANIE KEMAS zbudowane jest na platformie KEMAS NET

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

Transkrypt:

Bezpieczeństwo interoperacyjnego hostingu Gerard Frankowski, Zespół Bezpieczeństwa PCSS 4. Konferencja MIC Nowoczesne technologie bliżej nas Poznań, 04.03.2010 1

Agenda Wprowadzenie Zespół Bezpieczeństwa PCSS Bezpieczeństwo w MIC Sesja internetowa mechanizm i zagrożenia Implementacja sesji PHP w mieszanymśrodowisku hostingowym Pytania, dyskusja 2

Zespół Bezpieczeństwa PCSS Zespół Bezpieczeństwa PCSS istnieje od 1996r. Zabezpieczanie infrastruktury PCSS Bezpieczeństwo w projektach R&D Szkolenia, transfer wiedzy Badania własne Usługi zewnętrzne Ciekawsze badania z ostatnich lat Sieci bezprzewodowe w Poznaniu Raport nt. bezpieczeństwa bankowości elektronicznej Bezpieczeństwo serwerów WWW (Apache, MS IIS) Bezpieczeństwo sklepów internetowych http://security.psnc.pl 3

Bezpieczeństwow MIC Ochrona infrastruktury MIC Szkolenia bezpieczeństwa Więcej informacji w programie szkoleń http://mic.psnc.pl/szkolenia Badania poziomu bezpieczeństwa technologii Microsoft (2007-08) Audyty bezpieczeństwa dla administracji i MŚP (2007) Konferencje, MS Speaker Biuro Interoperacyjny hosting 4

Dlaczego interoperacyjnyhosting? Dlaczego zajmujemy się interoperacyjnym hostingiem? Odchodzenie od jedynie słusznych zestawów Sytuacje, w których wygodnie jest stosować np. PHP na Windows (dostępność / cena pracowników czy oprogramowania) Zawsze lepiej mieć wybór! Jak używać takich mieszanych systemów bezpiecznie? Temat na dziś: sesja internetowa PHP w bazie danych MS SQL Server 5

Sesja internetowa Protokół HTTP(s) jest bezstanowy, tj. nie umożliwia kojarzenia połączenia z użytkownikiem Sesja wyodrębnione połączenie konkretnego użytkownika z serwerem Identyfikowana przez session_id Wymaga zastosowania dodatkowych mechanizmów Możliwości przesłania danych sesji Ukryte pola formularzy Ciąg adresowy (URL) Ciasteczka (cookies) 6

Możliwości przechowywania stanu sesji PHP Pliki w specjalnym katalogu Baza danych ASP.NET Pamięć procesu serwera Baza danych Ciekawe pytanie: czy można zaimplementować mechanizm sesji wspólny dla obu języków? Więcej na szkoleniu jeszcze w tym półroczu! 7

Możliwości przechowywania stanu sesji PHP Pliki w specjalnym katalogu Baza danych ASP.NET Pamięć procesu serwera Baza danych Ciekawe pytanie: czy można zaimplementować mechanizm sesji wspólny dla obu języków? Więcej na szkoleniu jeszcze w tym półroczu! 8

PHP domyślna konfiguracja Katalog wskazywany przez session.save_path Domyślnie podkatalog instalacji PHP, np. D:\php\sessions Sposób na zmianę/odczyt: edycja pliku konfiguracyjnego lub funkcja session_save_path() Jak to działa? Kod PHP: session_start(); $_SESSION['parametr'] = "MIC"; 9

PHP domyślny magazyn sesji Identyfikator sesji: np. ocnttnh1mk2klm22tqj1q6ge84 Plik sesji Zawartość 10

Dlaczego sesje są takie ważne? Rozróżnianie użytkowników (logowanie) Wykradając identyfikator sesji można podszyć się pod innego użytkownika Kradzież ciasteczek z identyfikatorem sesji jest możliwa np. przy pomocy powszechnych dziś ataków XSS Zagrożenia dla identyfikatora sesji Przewidzenie Wymuszenie (fixation) Kradzież 11

Plik czy baza danych? Specyfika Możliwość odczytu obiektu przy pomocy przeglądania systemu plików (także z poziomu aplikacji webowej) Ważne jest odpowiednie zlokalizowanie repozytorium danych sesji (np. inna partycja niż aplikacje webowe) Większy problem przy współdzielonym hostingu lub wielu usługach (np. hosting i konta shellowe) Przechowywanie danych sesji w bazie jest nie mniej bezpieczne, a umożliwia lepszą kontrolę nad tymi danymi Można oprzeć się na bezpieczeństwie silnika bazy danych (ale nie tylko!) 12

Konfiguracja PHP Jak zmusić PHP, aby przechowywał stan sesji we wskazanej bazie danych? Funkcja boolsession_set_save_handler( callback$open, callback $close, callback $read, callback $write, callback $destroy, callback $gc) Możliwość napisania własnego, całkowicie dedykowanego systemu obsługi sesji! Wiele możliwości (także popełnienia błędów) 13

Funkcje zwrotne open wykonywana podczas otwarcia sesji close podczas zamknięcia sesji read podczas czytania danych sesji write podczas pisania danych sesji destroy w przypadku niszczenia sesji gc uruchamiana przez odśmiecaczmechanizmu sesji 14

Pytanie konkursowe To jeszcze nie koniec! O czym jeszcze, oprócz zdefiniowania funkcji zwrotnych i wywołania session_set_save_handler, musimy pamiętać? 15

16

Podłączenie do bazy danych MS SQL Przygotowanie tabeli Definicja funkcji zwrotnych Wywołanie funkcji sesji w pliku PHP Wynikiem powinny być nowe rekordy dodane do tabeli bazy danych MSSQL Poniższy przykład jest maksymalnie uproszczony i nie uwzględnia wielu istotnych aspektów! 17

Przygotowanie tabeli W tabeli dla prostoty przechowywać będziemy tylko identyfikator sesji oraz pojedynczy parametr tekstowy CREATE DATABASE mic_test; USE mic_test; CREATE TABLE mic_sessions (sess_id varchar(30) NOT NULL, parametr varchar(30), PRIMARY KEY(sess_id)); 18

Funkcja zwrotna mic_open() function mic_open($save_path, $session_name) { global $dbconn; $dbconn= mssql_connect(servername, DB_USER, DB_PASS); if($dbconn == NULL) die('polaczenie z MS SQL niemozliwe'); if(!mssql_select_db("mic_test")) die('niemozliwy wybor bazy danych); return TRUE; } 19

Funkcja zwrotna mic_close() function mic_close() { global $dbconn; $closed = mssql_close($dbconn); $dbconn = NULL; } return $closed; 20

Funkcja zwrotna mic_read() function mic_read($id) { global $dbconn; //filtrowanie! $strquery= "SELECT parametr FROM mic_sessionswhere sess_id='". $id. "';"; $res = mssql_query($strquery, $dbconn); if($res&& ssql_num_rows($res)) { $arrecord = mssql_fetch_assoc($res); return $arrecord['parametr']; } return ''; } } 21

Funkcja zwrotna mic_write() function mic_write($id, $data) { global $dbconn; //filtrowanie! $strquery= "INSERT INTO mic_sessionsvalues('". $id. "','". $data. "');"; } return mssql_query($strquery, $dbconn); 22

Sesje są już w bazie danych 23

Jak rozbudować mechanizm sesji? Filtrowanie danych Bardziej zaawansowana obsługa błędów Implementacja znaczników czasowych oraz wygaszanie sesji po odpowiednio krótkim czasie Mechanizm ekspercki rozpoznawanie unikalnego użytkownika na podstawie nagłówków HTML I wiele innych Zachęcamy do testów! 24

Podsumowanie Mechanizm sesji pozwala na ominięcie ograniczeń protokołu HTTP Dane sesji można przechowywać na różne sposoby Język PHP umożliwia utworzenie własnego, zaawansowanego mechanizmu obsługi sesji z wykorzystaniem serwera baz danych (także MSSQL) Wdrożenie najprostszej wersji tego mechanizmu jest wręcz trywialne ale to dopiero początek 25

Więcej informacji PHP Security Guide: Sessions http://phpsec.org/projects/guide/4.html Guru Speak: Storing Sessions in a Database http://shiflett.org/articles/storing-sessions-in-a-database Funkcje MS SQL Server w PHP http://php.net/manual/en/book.mssql.php Książka: Ch. Shiflett PHP Bezpieczne programowanie, Helion, 2006 http://helion.pl/ksiazki/phpbep.htm 26

Informacje kontaktowe Autor prezentacji gerard.frankowski@man.poznan.pl Centrum Innowacji Microsoft: http://mic.psnc.pl mic@man.poznan.pl PCSS http://www.pcss.pl Zespół Bezpieczeństwa PCSS http://security.psnc.pl security@man.poznan.pl 27

Pytania i dyskusja Dziękujęzauwagę! 28