daten – bank 4. vorlesungprg2/ss2018/folien/teil2/5_db_2018.pdf · dr. karsten tolle –prg2...
TRANSCRIPT
Dr. Karsten Tolle – PRG2 – SS 2018 3
Klausuranmeldung bis 16. Juli
• Anmeldung online über QIS/LFS (Details unter: http://go.uni-frankfurt.de) für Studierende der:– Informatik, Bioinformatik, Physik
– Mathematik, Geographie
• Lehramt - bitte eine kurze eMail an: [email protected]
• Alle anderen (Linguistik, …) :– Anmeldung per Zettel (PDF auf PRG2-Seite)!
… im Briefkasten des Prüfungsamtes Informatik einwerfen (Robert-Mayer-Str. 11-15 – Erdgeschoss)
Dr. Karsten Tolle – PRG2 – SS 2018 4
4. VL …
SQL:
• create
• insert
• select
(0,n) (0,n) Person
AusweisNr. Name Vorname
lebt_in
von bis
Ort
PLZ Ortsname
• 1. Normalform
• Schlüssel und Funktionale Abhängigkeiten
Datenaustauschformate:CSV, JSON, XML, …
Dr. Karsten Tolle – PRG2 – SS 2018 5
Heute …
SQL:
• create
• insert
• select
(0,n) (0,n) Person
AusweisNr. Name Vorname
lebt_in
von bis
Ort
PLZ Ortsname
• 1. Normalform
• Schlüssel und Funktionale Abhängigkeiten
• 2. Normalform
Sicherheit
Datenaustauschformate:CSV, JSON, XML, …
Dr. Karsten Tolle – PRG2 – SS 2018 6
Sicherheit …• … warum ist die so wichtig?
IoT – Internet of Things… der Kühlschrank am Netz …
Dr. Karsten Tolle – PRG2 – SS 2018 7
Gesetz zum Nachlesen:
http://www.bmi.bund.de/SharedDocs/Downloads/DE/Gesetzestexte/it-sicherheitsgesetz.html
http://www.heise.de/newsticker/meldung/Bundestag-verabschiedet-IT-Sicherheitsgesetz-2689526.html
Dr. Karsten Tolle – PRG2 – SS 2018 9
Datenlecks zum Stöbern …
• http://www.datenleck.net/ (Daten aus 2016)
• http://opalkatze.wordpress.com/to-be-continue/datenpannen/ (Listen für 2009 – 2013)
• http://www.faz.net/aktuell/wirtschaft/netzwirtschaft/chronik-die-wichtigsten-hackerangriffe-13345391.html (2009 -2014)
• https://en.wikipedia.org/wiki/Data_breach
Dr. Karsten Tolle – PRG2 – SS 2018 12
http://news.softpedia.com/news/sql-injection-and-lfi-accounted-for-over-three-quarters-of-all-web-attacks-505147.shtml#sgal_0
SQL Injection
… (böswilliges) Einschleusen oder Verändern von SQL-Befehlen an die
Datenbank durch den Benutzer.
Testen: http://www.irongeek.com/i.php?page
=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10
Bietet verschiedene Angriffsvarianten: SQL-Injection, XSS, …
Dr. Karsten Tolle – PRG2 – SS 2018 15
Sicherheit - Datenbanksysteme• 3-Schicht Architektur
Bild vom BSI IT-Grundschutz-Katalog: https://www.bsi.bund.de/DE/Themen/ITGrundschutz/ITGrundschutzKataloge/Inhalt/_content/baust/b05/b05007.html
Dr. Karsten Tolle – PRG2 – SS 2018 17
… bei schlechter Sicherheit ist nicht nur die Datenbank gefährdet!
• Dateien lesen:
– select LOAD_FILE('c:\\praegeherren.json');
• Dateien schreiben:
– select count(*) from prg2.bundeslaender INTO dumpfile 'Ausgabe.txt';
– select * from prg2.bundeslaender INTO OUTFILE 'Ausgabe2.txt';
SELECT @@datadir; ## gibt an, wo die Ausgaben abgelegt werden
Dr. Karsten Tolle – PRG2 – SS 2018 18
Benutzer und Rechte
• CREATE USER test IDENTIFIED BY PASSWORD ‘li720lhjLJ2' –
erzeugt einen neuen Benutzer
• GRANT select ON star_trek.* TO test – weist dem Benutzer
test die select Rechte für alle Tabellen der DB star_trek zu
• REVOKE select ON star_trek.* from test – nimmt ihm die
Rechte wieder
• GRANT select ON star_trek.offizier TO test – weist dem
Benutzer test die select Rechte für die Tabelle offizier zu
Siehe auch: http://dev.mysql.com/doc/refman/5.7/en/account-management-sql.html
Dr. Karsten Tolle – PRG2 – SS 2018 20
Server Variablen richtig setzten …
my.ini oder my.cnfWindows z.B.:C:\ProgramData\MySQL\MySQL Server 5.xLinux (my.cnf) z.B.:/etc/my.cnf or mysql-data-dir/my.cnf
select @@basedir;
… Aufgabenblatt 12 Aufgabe 3!
Dr. Karsten Tolle – PRG2 – SS 2018 21
Windows unter Dienste …
"C:\Program Files\MariaDB 10.2\bin\mysqld.exe" "--defaults-file=C:\Program Files\MariaDB10.0\data\my.ini" "MySQL"
Dr. Karsten Tolle – PRG2 – SS 2018 22
Empno Vorname Nachname Gehalt
1 Ines Müller 75000
2 Fred Wagner 60000
3 Ingo Meyer 72000
4 Max Müller 26000
Jemand der die Vor- und Nachnamen der Mitarbeiter benötigt, würde z.B. die Select-Rechte an der Tabelle „Mitarbeiter“ erhalten und so auch die Gehälter erfahren
Mitarbeiter
Dr. Karsten Tolle – PRG2 – SS 2018 23Mitarbeiter_Dept
Empno Vorname Nachname Gehalt
1 Ines Müller 75000
2 Fred Wagner 60000
3 Ingo Meyer 72000
4 Max Müller 26000
Depno Name Head …
1 Finanzen 2
2 Einkauf 1
3 HR 1
Empno Depno …
1 2
1 3
2 1
3 3
4 2
CREATE VIEW Mitarbeiter_Dept ASselect m.Empno, m.Nachname, d.Name as Abtfrom Mitarbeiter m, Abteilung d, Arbeitet_in awhere m.Empno = a.Empnoand a.Depno = d.Depno;
Mitarbeiter Abteilung
Arbeitet_in
Empno Nachname Abt
1 Müller Einkauf
1 Müller HR
2 Wagner Finanzen
3 Meyer HR
4 Müller Einkauf
Mitarbeiter_Dept
Dr. Karsten Tolle – PRG2 – SS 2018 24
Absichern am Bsp. MySQL
• keine Standard Benutzer – z.B. „root“mysql> RENAME USER root TO new_user;
• Netzwerkzugang nur erlauben, wenn nötig (sonst nur localhost)
• Firewall installieren
• show databases verbieten
• …
Siehe auch: http://dev.mysql.com/doc/refman/5.8/en/general-security-issues.html
Dr. Karsten Tolle – PRG2 – SS 2018 26
Welche Benutzer gibt es eigentlich alles …
• … wo finde ich diese Informationen
• … wo sind die Daten abgelegt: user, pw, …
• … wie sicher ist das?
• … und was hat das mit einem Regenbogen zu tun? (http://kestas.kuliukas.com/RainbowTables/ )
https://crackstation.net/http://passwordsgenerator.net/
Dr. Karsten Tolle – PRG2 – SS 2018 27
Salt und Pepper
• Passwörter werden durch zusätzliche Zeichenketten ergänzt:
– Salt – jedes PW erhält eine eigene Zeichenkette, welche in der DB mit und offen hinterlegt ist.
– Pepper – jedes PW wird mit der gleichen Zeichenkette ergänzt, diese Zeichenkette ist möglichst geheim.
Dr. Karsten Tolle – PRG2 – SS 2018 28
Zusätzliche Bedingungen einzufügen:
Eingabe (Zahl):
select * from mytable where id = 1 or id > 1 or name like ‘%‘??
Daten der Tabelle können ausgespäht werden.
Mögliche Gefahren
1 or id > 1 or name like ‘%‘
Dr. Karsten Tolle – PRG2 – SS 2018 29
Zusätzliche Statements einzufügen:
Eingabe (Zahl):
select * from mytable where id = 1; drop mytable; # ??
Direkter Schaden an der Datenbank, eventuell Ausfall
der Applikation.
Mögliche Gefahren
1; drop mytable; #
Dr. Karsten Tolle – PRG2 – SS 2018 30
Was möglich ist hängt ab von …
• DBMS / Verbindungsart / Programmiersprache/ Betriebssystem / …
– Erlaubt es mehrere SQL-Statements gleichzeitigauszuführen?
– Welche Zeichen werden als Kommentareinterpretiert? (z.B.: -- oder #)
– JDBC, ODBC, … ???
– Java, Php, Perl, …
Dr. Karsten Tolle – PRG2 – SS 2018 31
Vorgehen von Angreifern …
• Vorbereitung/Informationsgewinnung:… Suchmaschinen (Google)… spezielle Suchmaschinen (https://www.shodan.io/)
… Identifizierung von Honeypots
• … aktive Penetrationstests/Eindringversuche
Dr. Karsten Tolle – PRG2 – SS 2018 32
Gegenmaßnahmen• Positivlisten Methode – wurde eingegeben was man
erwartet?
• Negativlisten Methode – Ablehnung von Schlüsselwörtern
• Gegebene Funktion in PHP: mysql_real_escape_string()Sie Maskiert alle Zeichen mit denen man aus den Anführungszeichen ausbrechen kann.
• Kombination aller 3 ist die sicherste Variante.
• Anwendung diesbezüglich testen (und testen lassen!)
Siehe auch (für PHP):– http://php.net/manual/en/security.database.sql-injection.php
Sicherheit
Auf DBMS-Ebene
• Benutzer entsprechend anlegen
• Bereitstellung von Views
• Überwachung
• …
Auf Programmier-Ebene
• Wenig Infos nach Außen
• Mittel der verwendeten Prog. Sprache verwenden (z.B. PreparedStatement in Java oder Escape-Funktionen in PHP)
• Entsprechende Tests vorsehen
• Nicht erst am Ende an die Sicherheit denken
• …
Dr. Karsten Tolle – PRG2 – SS 2018 34
Literaturhinweise
• Advanced SQL Injection In SQL Server Applications von Chris Anley– http://www.cgisecurity.com/lib/advanced_sql_injection.pdf
– (more) http://www.encription.co.uk/downloads/more_advanced_sql_injection.pdf
• Advanced SQL Injection in MySQL (deutsch)– http://www.alirecaiyekta.com/uploads/Advanced-SQL-Injection-in-MySQL-GERMAN.pdf
• Irongeek - Adrian Crenshaw's Information Security site– http://www.irongeek.com/
– http://www.irongeek.com/i.php?page=mutillidae/mutillidae-deliberately-vulnerable-php-owasp-top-10Mutillidae: a free, open source web application provided to allow security enthusiest to pen-test and hack a web application.
Dr. Karsten Tolle – PRG2 – SS 2018 35
F = { Teil Lager Menge LageradresseLager Lageradresse }
vorrat (Teil Lager Menge Strasse Hausnr)
101 1 25 Waag. 10
102 3 410 Krugerstr. 42
102 1 300 Waag. 10
112 4 10 Brunnerstr. 105
F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }
Dr. Karsten Tolle – PRG2 – SS 2018 36
1
Probleme:Redundanz – Lageradresse für jedes Teil im Lager
redundant gespeichert
Einfüge-Anomalie – Lager ohne Teile kann nicht eingefügt werden
Lösch-Anomalie – Lager ohne Teile würden gelöscht werden
vorrat (Teil Lager Menge Strasse Hausnr)
101 1 25 Waag. 10
102 3 410 Krugerstr. 42
102 1 300 Waag. 10
112 4 10 Brunnerstr. 105F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }
Dr. Karsten Tolle – PRG2 – SS 2018 37
F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }
Lösung: Zerlegung der Relation
vorrat (Teil Lager Menge)
101 1 25
102 3 410
102 1 300
112 4 10
lager (Lager Strasse Hausnr)
1 Waag. 10
2 RMS 10
3 Krugerstr. 42
4 Brunnerstr. 105
Fremdschlüssel
vorrat (Teil Lager Menge Strasse Hausnr)
101 1 25 Waag. 10
102 3 410 Krugerstr. 42
102 1 300 Waag. 10
112 4 10 Brunnerstr. 105
Dr. Karsten Tolle – PRG2 – SS 2018 38
Prim
Ein Attribut A heißt prim in R, wenn es in einem der Schlüssel von R enthalten ist, sonst heiße es nicht prim.
A ist prim
X: X ist Schlüssel, AX
Dr. Karsten Tolle – PRG2 – SS 2018 39
volle funktionale Abhängigkeit
Eine funktionale Abhängigkeit X Y heißt vollefunktionale Abhängigkeit, wenn für keine Teilmenge X´ X, X´ Y gilt. Y heißt dann voll funktional abhängig von X.
X Y voll funktional
X´ X : X´ Y
Dr. Karsten Tolle – PRG2 – SS 2018 40
Die 2. NF ist verletzt, wenn ein Teil eines Schlüssels ein Nicht-Schlüsselattribut funktional bestimmt.
2. Normalform
Ein Relationenschema R ist in 2. Normalform (2NF), wenn es in 1NF ist und jedes nicht prime Attribut voll funktional von jedem Schlüssel von R abhängig ist.
2. NF
A nicht prim Schlüssel A voll funktional
Dr. Karsten Tolle – PRG2 – SS 2018 41
F = { Teil Lager Menge Strasse HausnrLager Strasse Hausnr }
vorrat (Teil Lager Menge)
101 1 25
102 3 410
102 1 300
112 4 10
lager (Lager Strasse Hausnr)
1 Waag. 10
2 RMS 10
3 Krugerstr. 42
4 Brunnerstr. 105
vorrat (Teil Lager Menge Strasse Hausnr)
101 1 25 Waag. 10
102 3 410 Krugerstr. 42
102 1 300 Waag. 10
112 4 10 Brunnerstr. 105
nicht 2. NF
2. NF
Dr. Karsten Tolle – PRG2 – SS 2018 42
Vorgehen beim Prüfen auf NF (WICHTIG!!!)
Ausgangspunkt: Relation R (mind. 1. NF) und Menge der FDs gegeben.
1. Welche Schlüssel gibt es? was sind die nicht primen Attribute!
2. Prüfe auf 2. NF (voll funktional abhängig von ALLEN Schlüsseln?)
Dr. Karsten Tolle – PRG2 – SS 2018 43
Übung
R = (A, B, C, D, E)
a. FD = {ABD, CDAC, ED}
b. FD = {AEBD, CDAC, ED}
c. FD = {ACEBD, CDAC, ED}
d. FD = {ACEBD, CDAC, ED, BAC}
a. Schlüssel = {CE}b. Schlüssel = {AC, CD, CE}
Dr. Karsten Tolle – PRG2 – SS 2018 44
F = { Kennzeichen R, ZUGEL_GES_GEW FÜHRERSCHEIN}
Fahrzeug
Kennzeichen Zugel_Ges_Gew Führerschein
2. NF?
KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN
F-AB 123 3.5 B
F-AB 234 7.5 C1
F-AB 235 7.5 C1
F-AB 236 12 C
F-AB 239 12 C
F-AB 230 17 C
… … …
Dr. Karsten Tolle – PRG2 – SS 2018 45
Trotzdem Probleme !
KENNZEICHEN ZUGEL_GES_GEW FÜHRERSCHEIN
F-AB 123 3.5 B
F-AB 234 7.5 C1
F-AB 235 7.5 C1
F-AB 236 12 C
F-AB 239 12 C
F-AB 230 17 C
… … …
Ist in 2. NF aber nicht in 3. NF!
Dr. Karsten Tolle – PRG2 – SS 2018 46
Auswirkungen!?
Entität_1
Attribute 1-n
A1 A2 … An Bi Ci
Evt. Erweitert um Beziehungsattribute(0,1) oder (1,1) oder sogar Attributeanderer Entitäten (bei 1-to-1 Bez.).
Normalisierung
MappingER rel. Model