Blatt 13 - Lehrstuhl für Praktische Informatik III

Werbung
Universität Mannheim
Lehrstuhl für Praktische Informatik III
Norman May
D7 27, Raum 410
68131 Mannheim
Telefon: (0621) 181-2586
Email: [email protected]
Datenbanksysteme I, SS 2004
Lösungen zum 13. Übungsblatt
1. Sicherheitsaspekte
Gegeben sei folgendes Fragment eines Java-Programms, daß eine parametrisierte
Anfrage mittels JDBC auswertet. Der Parameter der Anfrage wird als Argument
der Funktion übergeben. Die resultierende SELECT-Anweisung soll einzelne Namen
von Professoren ausgeben, die eine bestimmte PID haben.
ResultSet auswerten(String db, String login, String passwd,
String param) {
/* ... lade den JDBC Treiber ... */
ResultSet ausgabe = null;
if (SQLAnweisung != null) {
try {
/* Auswahl der Datenbank,
Identifikation und Authentisierung */
Connection con =
DriverManager.getConnection(db, login, passwd);
String SQLAnweisung =
"SELECT Name FROM Professoren WHERE PID=’" + param + "’";
Statement s = null;
try {
s = con.createStatement();
ausgabe = s.executeQuery(SQLAnweisung);
} catch (Exception e) {
throw e;
} finally {
s.close();
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return ausgabe;
}
(a) Geben Sie Beispiele an, wie das Ergebnis der Anfrage manipuliert werden kann, wenn der
Parameter der Anfrage derart ungeprüft in die Anweisung eingebaut wird.
1
(b) Wie können diese Probleme verhindert oder gelöst werden?
(c) Welche Sicherheitsprobleme müssen zusätzlich beachtet werden?
Lösungsvorschlag
(a) Inferenz: Da beliebige SQL-Anweisungen Eingegeben werden können, kann auf Daten geschlossen werden, die nicht direkt lesbar sind. Beispiel: ANY (SELECT PID FROM Professoren
WHERE Gehalt > 100000).
Datenverlust und unberechtigter Zugriff: durch SQL Injection: Argumente wie foo’
AND DELETE * FROM Professoren führen zu Datenverlust. Parameter wie ’ OR TRUE
liefern u.U. mehr Daten als erwünscht.
(b)
• Verwende ein PreparedStatement statt eines Statement, weil der Treiber durch Escape-Zeichen solche manipulierten SQL-Anweisungen vermeidet. Wenn der Treiber compilierte Statements unterstützt, werden Parameter nicht übersetzt, so daß updates wirkungslos bleiben.
• Parameter und SQL-Anweisungen validieren, z.B. nach ’, ; , --, select, insert,
delete suchen.
• Benutzerrechte einschränken, nur Lesezugriff.
• Länge von Benutzereingaben limitieren.
• Achtung bei Fehlermeldungen (z.B. ”keine Berechtigung für Attribut Student.geheimerBonus”)
(c) Aggregation: Bei Views mit aggregierten Daten können Selektionsparameter so variiert
werden, daß möglicherweise auf sensitive Einzeldaten geschlossen werden kann.
Organisatorische Probleme: Datenzugriff durch nicht autorisierte Benutzer oder auf nicht
vorgesehen Wegen, Umgehung der Zugriffskontrolle,
Die organisatorischen Probleme lassen sich nur teilweise technisch lösen. Stattdessen sind
organisatorische Maßnahmen notwendig, um diese Probleme zu beseitigen.
2. Anfragebearbeitung in VDBMS
Eine Versandfirma möchte ihre Lieferauftrage über eine verteilte relationale Datenbank abwickeln.
Das Schema der Datenbank enthält unter anderem folgende Relation:
• Auftrag(AuftragsNr, Artikel, Menge, Preis, Steuer, Lieferadresse, Liefermodus)
Eine Abteilung der Firma kümmert sich um die Annahme von Aufträgen. Die häufigsten Anfragen
aus dieser Abteilung beziehen sich auf die Attribute Artikel, Menge, Preis und Steuer. Eine
andere Abteilung macht die Bestellungen versandfertig und interessiert sich hauptsächlich fur die
Attribute Artikel, Menge, Lieferadresse und Liefermodus.
(a) Welche Fragmentierung ist hier sinnvoll (horizontal oder vertikal)?
(b) Zerlegen Sie die Relation in geeignete Fragmente. Geben Sie das Schema jedes Fragments
an.
(c) In der Lagerabteilung wird folgende Anfrage auf dem verteilten Datenbanksystem gestartet:
SELECT Artikel, Menge, Preis
FROM Auftrag WHERE Lieferadresse = ’Meier, Mannheim’;
i. Welche Transparenz liegt hier vor?
ii. Geben Sie einen kanonischen Operatorbaum für die Anfrage an.
iii. Optimieren Sie diesen Baum nach den in der Vorlesung vorgestellten Regeln.
Lösungsvorschlag
2
(a) vertikal
(b) Annahme(AuftragsNr, Artikel, Menge, Preis, Steuer)
Versand(AuftragsNr, Artikel, Menge, Lieferadresse, Liefermodus)
(c)
i. Fragmentierungstransparenz
ii.
Πa.Artikel,a.M enge,a.P reis
σv.Lief eradresse=0 M eier,M annheim0 ∧a.Auf tragsN r=v.Auf tragsN r
×
Annahme a
iii.
Versand v
Πa.Artikel,a.M enge,a.P reis
a.Auf tragsN r=v.Auf tragsN r
Annahme a
σv.Lief eradresse=0 M eier,M annheim0 ∧
Versand v
3. Synchronisation von replizierten Daten
Zeigen Sie, daß die write-all/read-any Methode zur Synchronisation bei replizierten Daten einen
Spezialfall der Quorum-Consensus-Methode darstellt:
Wie werden Stimmen zugeordnet, um write-all/read-any zu simulieren? Wie müssen dann die
Quoren Qw und Qr vergeben werden?
Lösungsvorschlag
Wenn wi = X gewählt wird, dann muß Qr = X und Qw = X · |S| sein, wobei |S| die Anzahl der
Stationen ist. Insbesondere kann X = 1 gewählt werden.
3
Herunterladen