Internetowe bazy danych



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

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Internetowe bazy danych

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

Internetowe bazy danych

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

Aplikacje WWW - laboratorium

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

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

Instalacja MySQL.

Baza danych do przechowywania użytkowników

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Aplikacje internetowe - laboratorium

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

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

Projektowanie systemów baz danych

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

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

Bazy danych i usługi sieciowe

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

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

Wprowadzenie do Internetu Zajęcia 5

Bazy danych w PHP dla początkujących

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

Internetowe bazy danych

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

Aplikacje WWW - laboratorium

Język SQL, zajęcia nr 1

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

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

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

CREATE USER

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

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

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

PHP + MySQL w laboratorium (1)

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

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

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

Podstawy programowania (PHP/Java)

Aplikacje www laboratorium

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

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

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

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

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Współpraca PHP z MySql

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Laboratorium 1 Wprowadzenie do PHP

Bazy danych. dr Radosław Matusik. radmat

Systemy internetowe Wykład 3 PHP

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

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

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

PHP: bazy danych, SQL, AJAX i JSON

Aplikacje internetowe

Programowanie internetowe

Wykład 05 Bazy danych

Zarządzanie systemami informatycznymi. Bezpieczeństwo przesyłu danych

Data modyfikacji:

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Obiektowe bazy danych

Paweł Cieśla. Dokumentacja projektu

Dokumentacja smsapi wersja 1.4

Zajęcia 10 obsługa formularzy w PHP

Rejestracja i Logowania - PHP/MySQL

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Wprowadzenie do Doctrine ORM

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Wykład 5. SQL praca z tabelami 2

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

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

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

0.1 Logowanie do serwisu

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Instrukcja konfiguracji funkcji skanowania

Oracle PL/SQL. Paweł Rajba.

The OWASP Foundation Session Management. Sławomir Rozbicki.

Zaawansowane bazy danych i hurtownie danych

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

Bazy Danych. Ćwiczenie 1: Przygotowanie środowiska pracy dla bazy MySQL z wykorzystaniem XAMPP Portable Lite oraz MySQL-Front

Podstawy programowania III WYKŁAD 2

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr Prosta obsługa Bazy w PHP

INSTRUKCJA OBSŁUGI DLA SIECI

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

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

INSTALACJA I KONFIGURACJA SERWERA PHP.

Autor: Joanna Karwowska

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

Bezpieczeństwo systemów komputerowych

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

Transkrypt:

Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl

Kontrola dostępu <?php if(!isset($user) &&!isset($haslo)) { // użytkownik podlega identyfikacji?> <h1>zaloguj się</h1> Strona zastrzeżona <form method = post action = achtung.php > <table border = 1> <tr> <th> Użytkownik </th> <td> <input type = text name = user> </td> </tr> <tr> <th> Hasło </th> <td> <input type = password name = haslo> </td> </tr> <tr> <td colspan = 2 align = center> <input type = submit value Zaloguj się > </td> </tr> </form>

<?php else if($user == uzytkownik && $haslo == haslo ) { // identyfikacja poprawna echo Możesz zobaczyć stronę ; else { // identyfikacja niepoprawna echo Nie zobaczysz strony ;?> Zasadnicze wady rozwiązania: akceptacja tylko jednego użytkownika i jednego hasła zapisanego w kodzie hasło przechowywane w formie otwartego tekstu ochrona tylko jednej strony internetowej przesyłanie hasła w formie otwartego tekstu

Przechowywanie haseł dostępu w skrypcie trudna modyfikacja, dostępność zbyt duża w pliku lepiej z kontrolą niepowołanych, problem gdy dużo w bazie danych dobry dostęp, łatwość modyfikacji create database wiara; use wiara; create table zawodnik ( user varchar(20) not null, haslo varchar(30) not null, ); insert into zawodnik values ( testman, test098 ); grant select, insert, update, delete on wiara.* to hans@localhost identified by J23 ; Tworzenie bazy w MySQL

<?php else { $connect = mysql_connect( localhost, hans, J23 ); if(!$connect) { echo Brak połączenia ; exit; $zap = select * from zawodnik where user like $user and haslo like $haslo ; $wynik = mysql_query($zap); if(!wynik) { echo Coś nie tak ; exit; $ile = mysql_num_rows($wynik); if($ile > 0) { echo Możesz zobaczyć stronę ; /* identyfikacja OK. */ else { echo Nie zobaczysz strony ; /* identyfikacja zła */?>

Zasadnicze wady rozwiązania: hasło przechowywane w formie otwartego tekstu ochrona tylko jednej strony internetowej przesyłanie hasła w formie otwartego tekstu Szyfrowanie hasła: w PHP funkcja crypt: string crypt (string łańcuch [, string klucz]) zwraca pseudolosowy ciąg znaków, nie można odwrócić procesu, ale to samo wejście i klucz dają ten sam który można porównać w MySQL funkcja password: string password (string) zwraca pseudolosowy ciąg znaków, nie można odwrócić procesu, szyfrowanie odbywa się według pewnego algorytmu mieszającego

Szyfrowanie hasła z PHP if($user == uzytkownik && $haslo == haslo ) { // identyfikacja OK. if($user == uzytkownik && crypt($haslo, xx ) == xxvcgpmnm2g9c ) { // identyfikacja OK. Szyfrowanie hasła z MySQL insert into zawodnik values ( testman, test098 ); $zap = select * from zawodnik where user like $user and haslo like $haslo ; $zap = select * from zawodnik where insert into zawodnik values user like $user and ( testman, password( test098 )); haslo like password( $haslo )

Zasadnicze wady rozwiązania: ochrona tylko jednej strony internetowej <?php if(substr($server_software, 0, 9) == Microsoft &&!isset($php_auth_user) &&!isset($php_auth_pw) && substr($http_authorization, 0, 6) == Basic ) { list($php_auth_user, $PHP_AUTH_PW) = explode( :, base64_decode(substr($http_authorization, 6))); // zamiast if może być zapytanie do bazy if ($PHP_AUTH_USER!= uzytkownik $PHP_AUTH_PW!= haslo { // użytkownik nie podał danych albo coś się nie zgadza header( WWW-Authenticate: Basic realm= Nazwa zasobu ); if(substr($server_software, 0, 9) == Microsoft ) header( Status: 401 Unathorized ); else header( HTTP/1.0 401 Unauthorized ); echo Nie zobaczysz strony ; else echo Możesz zobaczyć stronę ;?>

Moduł mod_auth_mysql (1) źródło: www.zend.com, www.mysql.com/downloads/contrib.html po rozpakowaniu katalog mod_auth_mysql, polecenie: configure ze ścieżką do serwera MySQL i Apache:./configure --with-mysql=/var/mysql --with-apache=/src/apach polecenie make install z parametrem: --activate-module=src/modules/auth_mysql/libauth_mysql.a założenie baz i tabeli do trzymania danych uwierzytelniających, mogą być to bazy dowolne w pliku httpd.conf dodać linię pozwalającą na łączenie z serwerem MySQL: Auth_MySQL_Info komputer użytkownik haslo uruchomienie Apache: /usr/local/apache/bin/apachectl startssl

Moduł mod_auth_mysql (2) plik.htaccess definiuje uwierzytelnianie z danych MySQL Auth_MySQL_DB - baza uwierzytelniania Auth_MySQL_Encryption_Types sposób szyfrowania haseł Auth_MySQL_Password_Field tablica haseł Auth_MySQL_Username_Field loginy użytkowników hasło dostępu do serwera MySQL w skrypcie PHP - ochrona zabezpieczeniami serwera WWW konfiguracja serwera WWW - *.php są przetwarzane tylko przez PHP, nikt z zewnątrz nie podgląda ich zawartości konfiguracja serwera WWW pojedynczy użytkownik może uruchomić skrypt, każdy pracuje na odrębnej kopii serwera

Cookies co to jest cookie? małe fragmenty tekstu wysyłane do przeglądarki użytkownika pomocne w tworzeniu koszyka zakupów, personalizacji witryn nie przechowują danych jawnych, mogą zawierać łańcuch identyfikacyjny łączący użytkownika z danymi w bazie danych tworzenie cookies określić jak będą wykorzystywane i kiedy będą ustawione ustawiać zawsze przed wysłaniem jakichkolwiek danych przeglądarki bo to część informacji nagłówka

setcookie( ) definicja pojedynczego pakietu Nazwa: nazwa zmiennej przechowywanej w tablicy globalnej $HTTP_COOKIE_VARS dostępna w kolejnych skryptach Wartość: wartość zmiennej przekazanej w parametrze nazwa Data ważności: ustala określony czas, po jego upłynięciu wartość cookie przestaje być dostępna, jeśli daty brak cookie traci ważność wraz z zamknięciem przeglądarki Ścieżka: określa katalogi, dla których pakiet cookie jest ważny, pojedynczy ukośnik pakiet cookie ważny dla wszystkich plików i katalogów na serwerze WWW Domena: cookie ważne tylko dla danego lokalnego hosta i domeny która je ustawiła, brak domeny nazwa hosta, który wygenerował cookie, poprawna domena minimum 2 kropki Bezpieczeństwo: jeśli 1 cookie transmitowany poprzez HTTPS

Cookies - przykład setcookie( id, 55sds809892jjsj2, time()+14400, /,.twojadomena.com, 0); wartość Time() + 60 Time() + 900 Time() + 1800 Time() + 3600 Time() + 14400 Time() + 43200 Time() + 86400 Time() + 259200 Time() + 604800 Time() + 2592000 definicja Godz + 1 min Godz + 15 min Godz + 30 min Godz + 1 godz Godz + 4 godz Godz + 12 godz Godz + 24 godz Godz + 3 dni Godz + 1 tydz Godz + 30 dni

Tworzenie testowego Cookie <?php $cookie_name = test_cookie ; $cookie_value = test spring! ; $cookie_expire = time()+86400; $cookie_domain =.twojadomena.com ; setcookie($cookie_name, $cookie_value, $cookie_expire, /, $cookie_domain, 0);?> <HTML> <HEAD> <TITLE>Set Test Cookie</TITLE> </HEAD> <BODY> <H1>Mmmmmmmm... Cookie!<H1> </BODY> </HTML> zapisać pod nazwą.php warto w przeglądarce ustawić informowanie o cookies

Cookie w uwierzytelnianiu (1) <?php $connect = mysql_connect( localhost, hans, J23 ); if(!$connect) { echo Brak połączenia ; exit; $zap = select * from zawodnik where user like $user and haslo like $haslo ; $wynik = mysql_query($zap); if(!wynik) { echo Coś nie tak ; exit; $ile = mysql_num_rows($wynik); if($ile > 0) { $cookie_name = auth ; $cookie_value = ok ; $cookie_expire = ; $cookie_domain = ; setcookie($cookie_name, $cookie_value, $cookie_expire, /, $cookie_domain, 0);

Cookie w uwierzytelnianiu (2) $display_block = <P><strong>Tajne menu:</strong></p> <ul> <li><a herf=\ secreta.php\ >tajna strona A</a> <li><a herf=\ secretb.php\ >tajna strona B</a> </ul> ; echo $display_block ; else { echo Nie zobaczysz strony ; /* identyfikacja zła */?> jeśli uwierzytelnianie się powiedzie ustawi się cookie o nazwie auth i wartości ok. ważność wygaśnie wraz z końcem sesji przeglądarki cookie będzie ważne dla wszystkich katalogów na lokalnym hoście

Cookie w uwierzytelnianiu (3) <?php if ($auth == ok ) { $msg = <P>Witamy uwierzytelnionego użytkownika na tajnej stronie A</P> ; else { header( Location: http://localhost/login.html ); exit;?> <HTML> <HEAD> secretb.php <TITLE>Secret page A</TITLE> </HEAD> <BODY> <?php echo $msg ;?> </BODY> </HTML> secreta.php