Bazy Danych i Systemy informacyjne Wykład 5. Piotr Syga

Podobne dokumenty
Bazy Danych i Systemy informacyjne Wykład 5. Piotr Syga

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

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

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL

Język SQL, zajęcia nr 1

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Bazy danych i usługi sieciowe

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Systemy GIS Tworzenie zapytań w bazach danych

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

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

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

Wykład 5. SQL praca z tabelami 2

Bazy Danych i Usługi Sieciowe

Wprowadzenie do JDBC z wykorzystaniem bazy H2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Systemowe aspekty baz

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Obrona przed SQL-injection w aplikacjach Java/JEE

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

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

Instalacja MySQL.

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

Systemowe aspekty baz danych

Projektowanie systemów baz danych

Ćwiczenie zapytań języka bazy danych PostgreSQL

P o d s t a w y j ę z y k a S Q L

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Metody dostępu do danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

SQL z perspektywy hakera - czy Twoje dane są bezpieczne? Krzysztof Bińkowski MCT,CEI,CEH,ECSA,ECIH,CLFE,MCSA,MCSE..

Programowanie Obiektowe Java

Programowanie Obiektowe Java

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

CREATE USER

Bezpieczeństwo systemów komputerowych

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

SQL :: Data Definition Language

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

SQL (ang. Structured Query Language)

SQL 4 Structured Query Lenguage

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Wykład 05 Bazy danych

Baza danych do przechowywania użytkowników

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

Wykład 8. SQL praca z tabelami 5

Oracle PL/SQL. Paweł Rajba.

Administracja i programowanie pod Microsoft SQL Server 2000

Język SQL, zajęcia nr 2

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Projektowani Systemów Inf.

Oracle11g: Wprowadzenie do SQL

PHP: bazy danych, SQL, AJAX i JSON

Paweł Rajba

Wykład 6. SQL praca z tabelami 3

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Ref. 7 - Język SQL - polecenia DDL i DML

SQL Server. Odtwarzanie baz danych.

Administracja bazami danych

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

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

Jerzy Nawrocki, Wprowadzenie do informatyki

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

Bazy danych. Dr inż. Paweł Kasprowski

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Hurtownia Świętego Mikołaja projekt bazy danych

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Język PL/SQL Procedury i funkcje składowane

Bazy danych. Polecenia SQL

Obiektowość BD Powtórka Czas odpowiedzi. Bazy Danych i Systemy informacyjne Wykład 14. Piotr Syga

Baza numerów Wersja 1.1

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS , Comarch DMS i Comarch DMS

Programowanie obiektów

Podejście obiektowe do relacyjnych baz danych Hibernate.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Pakiety podprogramów Dynamiczny SQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

ACESS- zadania z wykorzystaniem poleceń SQL

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

Transkrypt:

Bazy Danych i Systemy informacyjne Wykład 5 Piotr Syga 30.10.2018

PREPARE przypomnienie Przygotowanie zapytania dynamicznego Przypomnienie SET @age = 50; SET @str = CONCAT("SELECT * FROM Trener WHERE wiek >", @age,";"); PREPARE stmt FROM @str; EXECUTE stmt; DEALLOCATE PREPARE stmt;

PREPARE przypomnienie Przygotowanie zapytania dynamicznego Analogiczne zapytanie zapisane inaczej SET @age = 50; SET @str = CONCAT("SELECT * FROM Trener WHERE wiek >? ;"); PREPARE stmt FROM @str; EXECUTE stmt USING @age; DEALLOCATE PREPARE stmt;

SQL-Injection Idea wykorzystanie pól tekstowych w aplikacji do wprowadzenia własnego kodu zalogowanie się bez uprawnień, pozyskanie lub modyfikacja danych uniemożliwienie dostępu lub zmienienie działania kodu wnioskowanie na podstawie komunikatów błędów

SQL-Injection Przykład autoryzacji Logowanie ustalonego użytkownika SELECT userid FROM users WHERE name= Bob AND password= BobbyB ;

SQL-Injection Przykład autoryzacji Logowanie ustalonego użytkownika SELECT userid FROM users WHERE name= Bob AND password= BobbyB ; Procedura autoryzująca CREATE PROCEDURE auth (IN usr char(50), IN pass char(50), OUT ID INT) SELECT userid INTO ID FROM users WHERE name=usr AND password=pass; Wywołanie: CALL auth ( Bob, BobbyB,@uid) niewygodne wywołanie z cudzysłowem. Zapytanie skonkatenowane SET @str=concat("select userid FROM users WHERE name= ",@usr, AND password= ",@pass, ;");

SQL-Injection Próby logowania Nie znając danych logowania, chcemy spełnić warunek logiczny w WHERE, by zwrócone zostało odpowiednie ID i nastąpiło zalogowanie Podajmy jako nazwę użytkownika oraz hasło ciąg: OR = Zmienna @str otrzyma wartość "SELECT userid FROM users WHERE name= OR = AND password= OR = ;" Jeśli proces autoryzacji nie został zabezpieczony zostaniemy zalogowani jako pierwszy (userid) użytkownik w bazie, często wyświetlane przywitanie lub wgląd do danych podają nazwę konta.

SQL-Injection Co jeśli chcemy poznać hasło? Część funkcjonalności może wymagać potwierdzenia hasłem, co więcej kombinacja login(email) hasło może być wykorzystywana na wielu portalach W przypadku, gdy użytkownik aplikacji połączony jest z kontem administratora bazy: SELECT * FROM mysql.user Bruteforce: Zadajemy pytania tak/nie do bazy danych: Czy hasło Boba zawiera B : Username - U Password - OR EXISTS(SELECT * FROM users WHERE name= Bob AND password LIKE %B% ) AND = Czy hasło Boba zawiera b po B :... LIKE %B%b%... Czy o jest drugą literą hasła:... LIKE _o%...

SQL-Injection Poznanie zawartości bazy W analogiczny sposób do zgadywania hasła możemy dostać odpowiedź na inne pytania tak/nie, np.: Czy istnieje użytkownik o nazwie na A : Password - OR EXISTS(SELECT * FROM users WHERE name LIKE A% ) AND = Czy istnieje użytkownik o takim samym haśle co Bob: Password - OR EXISTS(SELECT * FROM users ub JOIN users u WHERE ub.name= Bob AND u.password=ub.password AND u.name<>ub.name) AND = Czy w bazie jest więcej niż 1000 użytkowników: Password - OR (SELECT COUNT(*) FROM users)>1000 AND = Czy w bazie bazylab jest tabela users: Password - OR EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA= bazylab AND TABLE_NAME= users ) AND =

SQL-Injection Poznanie zawartości bazy W analogiczny sposób do zgadywania hasła możemy dostać odpowiedź na inne pytania tak/nie, np.: Czy istnieje użytkownik o nazwie na A : Password - OR EXISTS(SELECT * FROM users WHERE name LIKE A% ) AND = Czy istnieje użytkownik o takim samym haśle co Bob: Password - OR EXISTS(SELECT * FROM users ub JOIN users u WHERE ub.name= Bob AND u.password=ub.password AND u.name<>ub.name) AND = Czy w bazie jest więcej niż 1000 użytkowników: Password - OR (SELECT COUNT(*) FROM users)>1000 AND = Jak sprawdzić czy każdy użytkownik w bazie ma inne hasło? Czy w bazie bazylab jest tabela users: Password - OR EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA= bazylab AND TABLE_NAME= users ) AND =

Rozpoznanie wrażliwości Próba ataku w ciemno Wiedza początkowa SELECT kolumny FROM tabela WHERE kolumna= textfield ; 1 Sprawdzenie czy pole jest wrażliwe na atak: Ronnie O Sullivan user unknown vs syntax error 2 Sprawdzenie reakcji: user OR = email (pm) vs user unknown vs error 3 Rozpoznanie kolumny: u AND (email IS NULL) AND = alternatywnie u AND email IS NULL; - - sprawdzamy inne pola: name, id, lastname, fullname, login, password,...

Rozpoznanie wrażliwości Próba ataku w ciemno - cd. 4 Rozpoznanie tabel: u AND (SELECT COUNT(*) FROM users)>0; - - sprawdzamy inne pola:accounts, logs, history,... 5 Sprawdzamy na której tabeli wykonywane jest oryginalne zapytanie: u AND users.name IS NULL; - - 6 Sprawdzamy istnienie użytkowników: u OR name LIKE %Bob%, możemy spróbować hasła. 7 Sprawdzamy możliwość dodania: u ; INSERT INTO users ( login, email, passwd, name ) VALUES ( Rogue, Daemon@Caraxes.ws, heir, Daemon ); - - 8 Sprawdzamy modyfikacje: u ; UPDATE users SET email = Daemon@Caraxes.ws WHERE email LIKE %@Caraxes.ws

Rozpoznanie wrażliwości Próba ataku w ciemno - cd. A po poznaniu danych wrażliwych i znudzeniu się bazą...

Rozpoznanie wrażliwości Próba ataku w ciemno - cd. A po poznaniu danych wrażliwych i znudzeniu się bazą... 9... być może coś więcej: u ; DROP TABLE users; - -

Rozpoznanie wrażliwości Zapobieganie Sanityzacja danych: white list vs black list Uwaga: O Sullivan vs... WHERE id = 1000 OR 1=1 Escape:... \ ; DROP TABLE users; - - Zarządzanie parametrami (JDBC): Statement stmt = connection.createstatement(); ResultSet rs = stmt.executequery( SELECT id FROM users WHERE name = + txtfield); // ; DROP TABLE users; - - zmieniamy na: PreparedStatement stmt = connection.preparestatement( SELECT id FROM users WHERE name =? ); stmt.setstring(1, txtfield); ResultSet rs = ps.executequery(); Zarządzanie prawami dostępu Zarządzanie bazą danych przez procedury składowane Odpowiednia konfiguracja komunikatów o błędach

Logowanie Tworzenie logów Przy konfiguracji IDE i servera (np. mysqld log=log_file) ustalamy zakres oraz path plików z logami, pliki sql_actions_*.log zawierają informacje o wykonywanych operacjach, bez danych do debbugowania Uwaga: flaga logowania może nie być ustawiona przez administratora bazy danych, możemy nie mieć (pełnego) dostępu do pliku logów, problem przy migracji bazy

Logowanie Tworzenie logów Możemy utworzyć własne logi zawierające timestamp, użytkownika, rodzaj akcji, informacje o zmienionych wierszach, kolumnach i tabelach W bazie danych tworzymy dedykowaną dla historii operacji tabelę Określamy jakie akcje mają być w niej uwzględniane modyfikujemy odpowiednie procedury i triggery Określamy jak długo dane mają być przechowywane w tabeli (usuwamy dane starsze niż... ) Różnicujemy okres czasu przechowywania dla różnych akcji/użytkowników Dane archiwalne przed usunięciem można zapisać do pliku (backup)

Utrata prywatności Po co nam prywatność? sklejanie informacji z różnych źródeł śledzenie użytkowników metadane

Utrata prywatności Przykłady linkowania baz danych Thelma Arnold vel AOL Searcher No. 4417749 Dane demograficzne P. Golle Privacy Risks in Recommender Systems Ramakrishnan et al. Netflix experiment Narayanan, Shmatikov IMBD + dane medyczne Dwork et al.

Utrata prywatności Przeciwdziałanie Jak zabezpieczać? szyfrowanie czas operacji, podział na dostęp zewnętrzny i wewnętrzny sztuczne wpisy odróżnianie od danych prawdziwych, rozmiar bazy zaburzanie wyciek danych

Differential Privacy Idea Udostępniamy bazę danych w celach statystycznych Pozwalamy na zapytania agregujące (np. sumę) Ujawniane wyniki mają oddawać rzeczywiste dane Zaburzamy dane, w celu zachowania prywatności

Differential Privacy Definicja Mówimy, że funkcja A zapewnia ε prywatność różnicową jeśli dla wszystkich zbiorów danych D i D różniących się na co najwyżej jednym wierszu oraz wszystkich A Range(A) spełnione jest: Pr[A(D) A] exp(ε) Pr[A(D ) A]

Differential Privacy Rozkład Laplace a Zmienna losowa Y ma rozkład Laplace a o parametrach µ i b: Y Laplace(µ, b) ( ) PDF f µ,b (x) = 1 2b exp x µ b Wartość oczekiwana µ Wariancja 2b 2

Differential Privacy Rozwiązanie dla danych numerycznych: Mechanizm Laplace a Dodajemy perturbacje do wyniku Czułość f = max D, D A(D) A(D ) Do ujawnianego wyniku dodajemy Y Laplace(0, f ε ).

Differential Privacy Rozwiązanie dla danych numerycznych: Mechanizm Laplace a Dodajemy perturbacje do wyniku Czułość f = max D, D A(D) A(D ) Do ujawnianego wyniku dodajemy Y Laplace(0, f ε ). Co z wielokrotnym odpytywaniem? Budżet prywatności dla n zapytań: ε = n i=1 ε i.

Differential Privacy Rozwiązanie dla danych numerycznych: Mechanizm Laplace a Dodajemy perturbacje do wyniku Czułość f = max D, D A(D) A(D ) Do ujawnianego wyniku dodajemy Y Laplace(0, f ε ). Co z wielokrotnym odpytywaniem? Budżet prywatności dla n zapytań: ε = n i=1 ε i. Dla danych nie numerycznych stosujemy mechanizm wykładniczy. Waluujemy jakość wyników zapytania, dostosowujmy perturbacje tak, by wyniki wysokiej jakości były wykładniczo bardziej prawdopodobne (względem czułości).

Differential Privacy Literatura Differential Privacy Sub-linear queries Redukcja liczby pytań Upublicznianie danych z dużych baz danych wrażliwych Limity przy upublicznianiu danych Privacy book Aspekt prawny GDPR