Architektur und Administration einer webbasierten

Werbung
Hochschule für Technik und Wirtschaft Dresden (FH)
Fachbereich Informatik/Mathematik
Diplomarbeit
im Studiengang Wirtschaftsinformatik
Thema:
„Architektur und Administration einer webbasierten chemischen
Stoffdatenbank. Konzept und Prototyp“
eingereicht von:
Alexander Ihlau
eingereicht am:
15.10.2007
Betreuer:
Prof. Dr. oec. Gunter Gräfe
Fachbereich Informatik/ Mathematik
Hochschule für Technik und Wirtschaft Dresden (FH)
Dr. Vinzenz Brendler
Abteilung Radiochemie
Forschungszentrum Dresden-Rossendorf e. V.
Inhaltsverzeichnis
Inhaltsverzeichnis
II
Abbildungsverzeichnis
V
Tabellenverzeichnis
Verzeichnis verwendeter Abkürzungen
VI
VII
1.
Einleitung
1
2.
Architektur webbasierter Datenbanksysteme
3
3.
4.
2.1
Allgemeiner Aufbau und Technologien webbasierter Lösungen......................3
2.2
Datenbanken im Web........................................................................................5
2.3
Vor- und Nachteile webbasierter Datenbanken ................................................6
2.4
Technologien und Zugriffsmethoden für webbasierte Datenbanken ................9
Sicherheit und Gefahren bei Web-Anwendungen im Internet
16
3.1
Informationssicherheit und Schutzziele ..........................................................16
3.2
Schwachpunkte und Angriffsszenarien...........................................................18
3.3
Schutzmaßnahmen und –techniken.................................................................20
3.3.1
Verhindern von Fremdzugriffen und –übernahmen................................20
3.3.2
Verschlüsselungsstrategien .....................................................................23
Administration von Datenbanken im Web
26
4.1
Grundlegende Konzepte der Datenbank-Administration................................26
4.2
Rechte- und Nutzerverwaltung .......................................................................29
4.3
Datensicherung................................................................................................30
4.4
Tuning und Abfrageoptimierung.....................................................................32
4.5
Auditing und Protokollierung .........................................................................34
4.6
Fehlermanagement ..........................................................................................35
II
5.
ISDA: Ausgangssituation und Ist-Analyse
5.1
Das Verbundprojekt ISDA zur Verwaltung chemischer Stoffdaten ...............37
5.2
Ziele und Nutzen von ISDA............................................................................38
5.3
Chemisches Modell und technologische Umsetzung......................................41
5.4
ISDA auf dem Datenbanksystem „PostgreSQL“............................................43
5.4.1
Implementierung in Soft- und Hardware, Installation, Hinweise ...........43
5.4.2
Funktionsbeschreibung wichtiger ISDA-Tabellen..................................45
5.5
6.
Ist-Analyse von ISDA .....................................................................................46
Anforderungsanalyse und Konzeption
Ziel und Nutzen des Administrationssystems .................................................48
6.2
Funktionale Anforderungen ............................................................................49
6.2.1
Allgemeine Systemfunktionen ................................................................49
6.2.2
Tabellen, Attribute und Datenstruktur ....................................................51
Nicht-Funktionale Anforderungen ..................................................................53
6.3.1
Allgemeine Anforderungen (Rahmenbedingung)...................................53
6.3.2
Qualitätsanforderung...............................................................................54
6.4
Fehlerbehandlung............................................................................................56
6.5
Architektur der ISDA-Umsetzung ..................................................................57
6.6
Konzeption - Use cases ...................................................................................59
Realisierung eines Prototyps zur Administration einer chemischer
Stoffdatenbank
8.
48
6.1
6.3
7.
37
63
7.1
Einrichtung und Installation von Web- und Datenbankserver........................63
7.2
Aufbau und Realisierung des Prototyps..........................................................64
7.2.1
Architektur und Aufbau ..........................................................................64
7.2.2
Programmtechnische Realisierung mit PHP und SQL............................67
7.2.3
Codebeispiel............................................................................................69
7.2.4
Frontend, Layout und Design..................................................................72
Fazit
74
III
Anlagen
76
Literaturverzeichnis
80
Glossar
83
IV
Abbildungsverzeichnis
Abbildung 1: einfache Client-Server-Darstellung ..........................................................4
Abbildung 2: Darstellung einer in das DBMS integrierten CGI-basierten
Datenbankanbindung...............................................................................14
Abbildung 3: Flexibilität der Eigenschaften im ISDA-Datenbank-Modell
am Beispiel eines Minerals .....................................................................42
Abbildung 4: Gesamtstruktur des ISDA-Datenbank-Systems bei Beginn
der Diplomarbeit .....................................................................................44
Abbildung 5: Entity-Relationship-Diagramm...............................................................51
Abbildung 6: neue Architektur des ISDA-Systems ......................................................57
Abbildung 7: Ablaufdiagramm eines allgemeinen Anmeldeprozesses (use case 1).....60
Abbildung 8: Ablaufdiagramm mit den Optionen eine "Editors" nach dem
Anmeldeprozess (use case 2) ..................................................................61
Abbildung 9: Ablaufdiagramm mit den Optionen eines "Administrators"
nach dem Anmeldeprozess (use case 3)..................................................62
Abbildung 10: Darstellung des Aufbaus der Seiten und Objekte des Prototyps.............64
Abbildung 11: Code-Ausschnitt aus "site_structure.php" ..............................................70
Abbildung 12: Code-Ausschnitt aus "page.php" ............................................................71
Abbildung 13: Screenshot Protoyp - Registrierung ........................................................72
Abbildung 14: Screenshot Prototyp - Login ...................................................................73
Abbildung 15: Screenshot Prototyp - Hauptseite (als Administrator) ............................73
V
Tabellenverzeichnis
Tabelle 1: Hauptunterschiede beim Zugriff relationaler DBMS und
Information Retrieval Systeme ......................................................................6
Tabelle 2: Funktion wichtiger ISDA-Tabellen .............................................................45
Tabelle 3: Funktionale Anforderungen: Verarbeitungsfunktionen ...............................50
Tabelle 4: Funktionale Anforderungen: Prüffunktionen...............................................50
Tabelle 5: Tabelle "isda_users".....................................................................................52
Tabelle 6: Tabelle "isda_user_roles" ............................................................................52
Tabelle 7: Tabelle "isda_user_activate"........................................................................52
Tabelle 8: Use case 1: Nutzerregistrierung ...................................................................60
Tabelle 9: Use case 2: Funktionen eines Editors ..........................................................61
Tabelle 10: Use case 3: Funktionen eines Administrators ..............................................62
Tabelle 11: Im Prototyp verwendete PHP-Klassen.........................................................76
Tabelle 12: Im Prototyp verwendete PHP-Seiten ...........................................................78
Tabelle 13: Im Prototyp verwendete StyleSheets ...........................................................79
VI
Verzeichnis verwendeter Abkürzungen
BMBF
Bundesministeriums für Bildung und Forschung
BMWi
Bundesministeriums für Wirtschaft
DBS/ DBMS
Datenbanksystem/ Datenbankmanagementsystem
DBA
Datenbankadministrator
dbo
database owner (Datenbankeigner)
ERD
Entity-Relationship-Diagramm
FZD
Forschungszentrum Dresden-Rossendorf e.V.
GRS
Gesellschaft für Anlagen- und Reaktorsicherheit
ISDA
Integriertes Sorptions-Datenbankensystem für Wechselwirkungen
chemisch-toxischer und radioaktiver Kontaminanten mit
mineralischen Systemen
ITSEC
Information Technology Security Evaluation Criteria
MD5
Message-Digest-Algorithm 5
RES³T
Rossendorf Expert System for Surface and Sorption Thermodynamics
SQL
Structured Query Language
SODA
Sorptions-Datenbank
TCSEC
Trusted Computer System Evaluation Criteria (Orange Book)
VII
1. Einleitung
Das Thema der Diplomarbeit orientiert sich an einem dringenden Bedarf des
Forschungszentrums Dresden-Rossendorf (FZD). Das Institut für Radiochemie des FZD
ist zurzeit damit befasst, im Rahmen eines Verbundprojektes mit anderen Instituten das
System einer chemischen Stoffdatenbank neu zu organisieren und zu strukturieren. Das
Verbundprojekt hat die Bezeichnung ISDA – „Integriertes Sorptions-Datenbanksystem
für Wechselwirkungen chemischer und radioaktiver Kontaminanten mit mineralischen
Systemen“. Ziel dieses Projektes ist es, den in verschiedenen Inhouse-Datenbanken
verankerten und zum Teil noch unstrukturierten großen Umfang an Daten und Knowhow zum Fachgebiet in einem gemeinsamen Datenbanksystem zusammenzuführen.
Durch die Web-Anbindung soll zugleich erreicht werden, dass die interaktive Arbeit
aller Nutzer des Datenbanksystems wesentlich verbessert wird, der Daten- und
Wissensspeicher einer breiteren Öffentlichkeit zur Verfügung gestellt werden kann und
die Vorteile einer webbasierten Datenbank für die Organisation des Datenbanksystem
selbst genutzt werden können.
Die vorliegende Diplomarbeit widmet sich einem ganz bestimmten Teilaspekt dieses
komplexen Themas – der Entwicklung einer geeigneten Administrationsstrategie und struktur für diese webbasierte Datenbanklösung, da hierfür im Institut für Radiochemie
des FZD keine Erfahrungen vorliegen.
Um diese Aufgabe zu lösen, werden zunächst die theoretischen Grundlagen und der
aktuelle Entwicklungsstand hinsichtlich der Architektur, Sicherheit und Administration
webbasierter Datenbanken in einer Übersicht dargestellt. Damit wird bereits für den
Anwender eine wichtige Orientierung über den gegenwärtigen Erkenntnisstand und
über optionale Lösungswege gegeben.
In enger Zusammenarbeit mit dem Anwender werden ausgehend von der
Ausgangssituation des Projektes die weiteren Anforderungen an die Architektur und
Administration der webbasierten chemischen Stoffdatenbank analysiert und die
-1-
Konzeption für deren praktische Lösung entwickelt. Das Problem der Datensicherheit
und der Zugriffsrechte ist dabei von übergreifender Bedeutung.
Die Diplomarbeit ist in das Gesamtprojekt eingeordnet. Ihr Wert liegt vor allem in der
konzeptionellen Zuarbeit für ein wesentliches Gebiet des Projektes. In der Konzeption
der Architektur und der Administration der webbasierten chemischen Stoffdatenbank
und der Entwicklung eines Prototyps dazu sieht das Institut für Radiochemie des FZD
einen sehr wichtigen Beitrag für die Weiterführung des Verbundprojektes ISDA.
-2-
2. Architektur webbasierter Datenbanksysteme
2.1 Allgemeiner Aufbau und Technologien webbasierter Lösungen
Um Technologien webbasierter Datenbanken und deren Administration über das
Internet genauer zu betrachten, werden im Folgenden zunächst die Grundlagen bzw. der
generelle Aufbau webbasierter Lösungen allgemein kurz dargestellt. Üblicherweise
unterscheidet
man
bei
webbasierten
Lösungen
zwischen
serverseitigen
und
clientseitigen Techniken.
Eine serverseitige Technik ist ein Programm oder eine Programmiersprache, die von
einem Webserver oder Applikationsserver ausgeführt wird. Sie ist, bis auf wenige
Systemanforderungen, vom Client unabhängig.
Als clientseitige Technik werden alle Techniken bezeichnet, die ein Programm des
Endnutzers, in dem Fall der Browser, ausführen muss. HTML ist beispielsweise eine
solche Technik, die allerdings von jedem gängigen Webbrowser beherrscht wird.
Andere clientseitige Techniken, wie zum Beispiel JavaScript oder Flash, werden nicht
von allen Browsern unterstützt oder benötigen zusätzliche Komponenten. Sie sind daher
beim Einsatz von Internetanwendungen browserabhängig. Die Vorteile clientseitiger
Technologien liegen hauptsächlich in der Entlastung des Servers, da eine komplexere
Anwendung jeweils
nur einmal
heruntergeladen
werden
muss.
Aufwendige
Berechnungen und Funktionen müssen nicht bei jeder Anfrage des Clients vom Server
berechnet und die Ergebnisse wieder zurück an den Browser geschickt werden.
Um Datenbanken im Web verfügbar zu machen, eignen sich serverseitige Technologien
sehr gut, wofür bereits eine Reihe von verschiedensten Techniken zur Verfügung steht.
Neben der Unabhängigkeit vom Browser haben serverseitige Techniken noch weitere
Vorteile:
-
Der Benutzer bekommt nur die Ergebnisse von Berechnungen auf dem Browser
zu sehen. Andere Nutzerdaten oder komplizierte Prozesse und Methoden, deren
-3-
Vorgehensweise vielleicht sogar geheim ist, bleiben dem Nutzer verborgen und
sind nicht ohne weiteres zugänglich.
-
Aufwendige
Berechnungen
und
Datenbankabfragen
werden
zum
Teil
serverseitig schneller abgearbeitet, da zum einen die Server-Hardware meist
besser ausgestattet ist als der Rechner des Benutzers, und zum anderen der
Datenbankserver sich oft in der Nähe des Web- oder Applikationsservers
befindet und damit lange Übertragungswege beziehungsweise eine hohe Netzlast
vermieden werden.
-
Ein weiterer Vorteil serverseitiger Techniken ist die Möglichkeit, Benutzer- und
Zugangsdaten, zum Beispiel für den Zugriff auf Datenbanken, zu speichern.
Diese auf dem Client-Rechner zu speichern ist, bis auf wenige Ausnahmen,
nicht sinnvoll.
Es besteht auch die Möglichkeit, client- und serverseitige Technologien zu
kombinieren, beispielsweise PHP und Flash, um die Vorteile beider nutzen zu können.
In der folgenden Abbildung wird eine einfache Client-Server-Architektur dargestellt,
wobei der Client HTML-Seiten von einem Server anfordert, herunter lädt und über den
Webbrowser darstellt.
Abbildung 1: einfache Client-Server-Darstellung
-4-
2.2 Datenbanken im Web
Das Web ermöglicht die globale Bereitstellung von Informationen und den globalen
Zugriff auf zentrale Daten, Datenbanksysteme, die universelle Datenverwaltung. Die
Kombination von Datenbanksystemen mit dem Internet birgt viele Nutzungsmöglichkeiten in sich und hat heute schon zu einer Vielzahl webbasierter Datenbankanwendungen
geführt, wie zum Beispiel Online-Banking und -Nachrichten,
Auftragsverfolgung, Virtuelles Warenhaus mit Bestellkatalogen. Das Potential, das der
Zugriff über das Web für den Einsatz von Datenbanksystemen bietet, reicht von der
Transaktionsverarbeitung beim elektronischen Handel (E-Commerce) über digitale
Bibliotheken bis hin zu unternehmensübergreifenden Abwicklungen von Geschäftsprozessen aller Art.
Der Begriff „Datenbanken im Web“ ist zunächst sehr weit gefasst und kann im
Allgemeinen in zwei Gruppen unterschieden werden:
-
Datenbanken, die vor und neben dem Internet entstanden sind, haben ein
logisches
Datenmodell
(hierarchisch
bzw.
netzwerk-,
relational-
oder
objektorientiert)
-
Datenbanken, die für und mit dem Internet entstanden sind, haben kein logisches
Datenmodell als Grundlage (z.B. Information Retrieval Systeme)
Information Retrieval Systeme ermöglichen die Speicherung und Wiedergewinnung
von Informationen in Online-Datenbanken. Dabei sind folgende Hauptunterschiede
beim Zugriff auf relationale Datenbankmanagementsysteme (DBMS) und Information
Retrieval Systeme zu betrachten:
-5-
Tabelle 1: Hauptunterschiede beim Zugriff relationaler DBMS und Information Retrieval Systeme
Speichern
Wiederauffinden
Relationale DBMS
Formatierte Datensätze
Attributwerte als Ganzes zur Indexierung
benutzt
Nutzung
Auswerten, Ändern, Löschen, Eingeben
Information Retrieval System
Unformatierte Datensätze
Werte eines längeren textlichen
Feldes zur Indexierung benutzt,
wortweise Indexierung,
Invertierung, Volltextinvertierung,
Deskriptorinvertierung
Eingeben, Auswerten, (kaum
Änderungen)
Bei der Kopplung von Internet und Datenbank-Technologien können DatenbankBetriebssysteme einerseits zur Verwaltung der Webseiten eingesetzt werden,
andererseits zur Verwaltung der traditionellen Daten, die über das Web zugänglich
gemacht werden. [I_WLOKA1]
Im Rahmen dieser Diplomarbeit kommen Web-Anwendungen mit Zugriff auf eine
traditionelle Datenbank zum Einsatz. Daher wird nicht weiter auf die Verwaltung von
Webseiten mittels Datenbanken, wie zum Beispiel bei einem webbasierten Content
Management System, eingegangen.
Gemeinsamkeiten des WWW und der Datenbanknutzung sind unter anderem:
-
das Abspeichern von Daten und der Zugriff über Server
-
es existieren geregelte Zugriffspfade zu diesen Daten
-
das Abspeicherung erfolgt auf verschiedene Knoten im Netzwerk
-
Suche ist nach gewissen Kriterien möglich
2.3 Vor- und Nachteile webbasierter Datenbanken
Das Internet ist heutzutage das Netzwerk der Informationen, auf das man an jedem Ort
der Welt relativ schnell zugreifen kann. Um Zugang zu bekommen, braucht man nur
einen Computer oder technisches Gerät, welches am Internet angeschlossen ist, und zur
Darstellung von Webseiten einen webfähigen Browser. Dies hat sehr viele Vor- und
-6-
Nachteile, die nachfolgend, in Bezug auf Datenbanken mit Zugriff aus dem Web, kurz
beleuchtet werden.
Vorteile
Durch neueste client- und serverseitige Technologien ist es kein Problem mehr,
unabhängig vom Aufenthaltsort Netzwerke, Datenbank- und andere Computersysteme
zu steuern und zu administrieren. Das heißt, durch diese dezentrale Administration wird
man flexibler und kann auf Veränderungen und Ausfälle viel schneller reagieren.
Die weite Verbreitung des Internets und der technische Fortschritt erschufen eine
Menge von Technologien, um Daten im Internet zur Verfügung zu stellen. HTML und
weitere weltweite Standards bzw. Richtlinien für die Kommunikation zwischen Server
und Clients ermöglichen den Einsatz von Webseiten relativ unabhängig von bestimmter
Server-Hardware oder proprietärer Software. Durch diese Standards und durch
zusätzliche Sprachpakete für Browser wird der Datenaustausch international, also
relativ unabhängig auch von einer Landessprache.
Ein weiterer Grund, webbasierte Technologien für die Bereitstellung von Daten zu
nutzen, ist die Kontrolle über die Zugriffe von Nutzern sowie über Sichten auf
öffentliche und nicht öffentliche Daten. Dies beinhaltet auch den Schutz geistigen
Eigentums, der beispielsweise bei einer Verbreitung von Daten auf CDs nicht
gewährleistet werden kann, da der Nutzer die Daten und teilweise auch die
Datenstruktur auf einem Medium besitzt. Diese könnte er dann am Rechner
vervielfältigen, verändern und ggf. auch verbreiten, bis hin zum Reverse-Engineering.
Die Bestimmung über Zugriffe sowie die Kontrolle der Nutzer und insbesondere des
Verbreitungsgrades sind somit auch ein großer Vorteil bei der Bereitstellung der Daten
im Internet. Außerdem kann, im Gegensatz zum langwierigen Versand von Daten auf
CDs oder anderen Medien, eine Webseite mit Anbindung an eine Datenbank auf einem
zentralen Server viel schneller aktualisiert, angepasst und der Öffentlichkeit zur
Verfügung gestellt werden.
-7-
Neben der Verwaltung traditioneller Daten, die über das Netz verfügbar gemacht
werden, können Datenbanksysteme auch für die Verwaltung von Webseiten selbst
genutzt werden. Webbasierte Content Management Systeme nutzen beispielsweise diese
Technologie, wobei meist Layout und Daten getrennt abgespeichert werden, um eine
größere Flexibilität zu erhalten.
Wichtig für die Optimierung und Anpassung einer Webseite ist die Möglichkeit der
statistischen Erhebungen über Zugriffsfrequenzen, Fehleingaben und eventuelle
Systemausfälle. Auch kann ein schnelleres direkteres Feedback des Endnutzers
bezüglich der Zufriedenheit und Benutzerfreundlichkeit der Seite eingeholt und über die
Datenbank ausgewertet werden.
Nachteile
Nutzt man einen zentralen Server für die Verarbeitung von Anfragen, muss dieser auch
permanent verfügbar sein. Ein Ausfall von Web- oder Datenbankserver hat eine hohe
Hebelwirkung und bedeutet, dass global kein Nutzer mehr Zugang zu den Daten hat.
Um die Robustheit und ständige Verfügbarkeit der Daten zu realisieren, benötigt man,
je nach
Zugriffsfrequenz der Seite und Datenbank, leistungsstarke Hardware und
Backup-Systeme. Sehr wichtige Server und Rechensysteme, wie die der Banken und
Börsen beispielsweise, befinden sich meist in bewachten und klimatisierten Gebäuden
oder Rechenzentren. Hierbei entstehen zum Teil enorme zusätzliche Kosten und
Aufwendungen.
Ein weiterer Nachteil von webbasierten Datenbanken besteht darin, dass die ständige
Kontrolle und Übersicht über die Daten gewährleistet sein muss. Durch schlechte
Datenstrukturen und durch die weite Verbreitung im Netz kann es bei der
Informationsflut schnell passieren, dass eine Firma den Überblick über ihre Daten
verliert. Alte, nicht mehr verwendete Daten befinden sich zum Teil auf verschiedensten
Servern im Internet und sind nur sehr schwer zu überschauen oder zu korrigieren.
-8-
Durch die weltweite Erreichbarkeit der Server und der Technologien entsteht weiterhin
die Gefahr von ungewollten Fremdzugriffen durch Sicherheitslücken. Dies wird
umfassender im Kapitel 3 erläutert.
2.4 Technologien und Zugriffsmethoden für webbasierte
Datenbanken
In diesem Abschnitt werden einige bedeutende webbasierte Sprachen und Technologien
vorgestellt, die der Darstellung von Daten dienen und Methoden des Zugriffs auf
Datenbanken
im
Internet
bereitstellen.
Dabei
wird
zwischen
clientseitigen,
serverseitigen und übergreifenden Techniken unterschieden. Die Basistechnologien für
den Zugriff auf Datenbanken über das WWW werden jeweils kurz erläutert. Auf
Technologien und Sprachen, die sich nicht konkret für den Zugriff auf Datenbanken in
Betracht kommen, wie zum Beispiel HTML, wird dabei nicht näher eingegangen.
Clientseitige Techniken
JavaScript
JavaScript ist eine objektbasierte Skriptsprache mit Elementen aus den funktionalen
Programmiersprachen und wird überwiegend clientseitig eingesetzt. Trotz der
Namensähnlichkeit
hat
JavaScript
nur
geringe
Gemeinsamkeiten
mit
der
Programmiersprache Java. Mit clientseitigem JavaScript können dynamisch Inhalte
generiert
werden,
die
zum
Beispiel
das Erscheinungsbild
einer Seite bei
Nutzerinteraktion ändern. Voraussetzung ist die Unterstützung des Webbrowsers und
ein kompatibler JavaScript-Interpreter, der den im HTML eingebetteten Code ausführt.
JavaScript selbst kann jedoch keine Verbindung mit einem Server aufnehmen und bietet
daher keine Möglichkeit, auf dem Server liegende Dateien oder Datenbanken
auszulesen. [B_SPONA1]
-9-
Java-Applets
Im Gegensatz zu JavaScript sind Java-Applets Computerprogramme, die in der
Programmiersprache Java geschrieben wurden. Diese werden meist von HTML-Seiten
aufgerufen, heruntergeladen und ausgeführt. Voraussetzung dazu ist eine Java-VM
(Virtual Machine), über die der jeweilige Webbrowser verfügen muss. Diese VM kann
entweder Teil des entsprechenden Browsers sein oder in Form eines Plugins
(zusätzlicher Softwarekomponente) nachträglich installiert werden. Mit Java-Applets
lassen sich bereits komplexe Anwendungen erstellen, die auf diese Weise auf die
Installation
lokaler
Software
verzichten
und
ohne
großen
Aufwand
mit
unterschiedlichen Browsern und Betriebssystemen laufen können. Mit Java Applets
kann bereits über eine JDBC-API eine Verbindung vom Client direkt mit einer
Datenbank
aufgenommen
werden.
Dies
bedeutet
zwar
eine
aufwendigere
Programmierung der Benutzerschnittstelle und bedarf einer längeren Ladezeit des
Applets, jedoch wird gleichzeitig der Webserver von intensiven Datenbankabfragen
entlastet. Durch die Java-Schnittstelle (JDBC) ist ebenfalls eine höhere Portabilität
gewährleistet. [B_SPONA1]
Flash
„Adobe Flash“ ist eine proprietäre integrierte Entwicklungsumgebung zur Erstellung
multimedialer Inhalte, so genannter „Flash-Filme“. Die dabei entstehenden Dateien
liegen im SWF-Format vor, einem auf Vektorgrafik basierenden Grafik- und
Animationsformat. Um diese Flash-Dateien im Browser zu betrachten, ist ein
proprietäres Abspielprogramm (Flash-Player) oder Plugin erforderlich. Durch den
hohen Verbreitungsgrad und wegen der vielfältigen Möglichkeiten, besonders im
Animationsbereich, bietet sich diese Technologie zur professionellen Darstellung und
Präsentation an. Ein Datenbankzugriff mit Flash wird meist über andere Skriptsprachen,
wie PHP, realisiert, da der Aufruf von Flash-Animationen oftmals sowieso aus diesen
Skripts heraus durchgeführt wird. [I_ADOBE1]
-10-
Serverseitige Techniken
CGI (Common Gateway Interface)
Das Common Gateway Interface ist eine so genannte allgemeine Schnittstelle und
Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die
Anfragen bearbeitet. Ein Webserver, der CGI unterstützt, stellt der externen Software
eine Laufzeitumgebung zur Verfügung, die im Grunde aus der Bereitstellung von Einund Ausgabekanälen (stdin und stdout) und Umgebungsvariablen besteht. Diese helfen
dem Programm, sich über die Anfrage, Webserver-Einstellungen und -Situation zu
informieren. Datenbankabfragen lassen sich über Skriptsprachen wie Perl im
Zusammenhang mit CGI realisieren. [B_LOESE1]
Perl
Perl ist eine freie, plattformunabhängige Programmiersprache, deren Code durch einen
Interpreter auf dem Server übersetzt wird. Perl-Skripte werden nicht innerhalb von
HTML-Dateien gespeichert, sondern in separaten Dateien, die in einem CGI-BINVerzeichnis innerhalb der Webpräsenz liegen müssen. Eine Webseite, die mit einem
Perl-Skript generiert wird, muss auch komplett mit dem Skript erstellt werden. Es ist
nicht möglich, nur einzelne Teile der Seite durch ein Perl-Skript generieren zu lassen,
jedoch können in der Perl-Datei HTML-Teile definiert werden. Der Pfad des PerlInterpreters wird im Skript angegeben, was die Portabilität auf andere Webserver
erschwert. Die datenbankunabhängige Schnittstelle DBI bietet in Perl einen guten
Zugriff auf alle gängigen Datenbanken. [B_SPONA1]
JSP (Java-Server-Pages)
Es handelt sich bei JSP um eine serverseitige Technik, die auf dem Server Java-Code
ausführt und zur dynamischen Erzeugung von HTML oder XML dient. Java-ServerPages werden unter Verwendung eines speziellen JSP-Compilers in Java-Quellcode,
welcher einem Java-Servlet entspricht, umgewandelt. Die mit dem Java-Compiler
erzeugten Klassen werden von einem Webserver ausgeführt beziehungsweise
interpretiert. Damit das funktioniert, muss neben dem Webserver auch ein ApplicationServer installiert sein. Application-Server sind für den privaten Einsatz oft kostenlos,
jedoch für den kommerziellen Einsatz verursachen sie nicht gerade geringe Kosten. Aus
-11-
diesem Grund gibt es kaum Webspace-Provider, die JSP unterstützen. Durch viele
Programme zur visuellen Gestaltung von JSP-Seiten (zum Beispiel „Adobe
Dreamweaver“ und „Adobe GoLive“) wird diese Technologie trotzdem auf vielen
zumeist firmeneigenen Webservern, die unabhängig von Webspace-Providern sind,
eingesetzt. Wie bei allen in Java über die J2EE-Plattform entwickelten Programmen
kann auch hier über die JDBC-Schnittstelle problemlos auf alle bekannteren
Datenbanksysteme zugegriffen werden. [B_SPONA1]
ASP.NET (Active Server Pages .NET)
Dies ist eine serverseitige Technologie von Microsoft zum Erstellen von WebAnwendungen auf der Basis des Microsoft .NET-Frameworks. Hierbei ist es möglich,
in einer, von .NET unterstützter, beliebiger Sprache Anwendungen für das Web zu
schreiben. Inbegriffen sind zum Beispiel die Sprachen C#, VB.NET, J#, Delphi.NET
und viele mehr. ASP.NET ist keine Programmiersprache, sondern eine Technologie.
Somit kann jede ASP.NET-Webseite in allen .Net Sprachen programmiert werden,
wobei alle Programme in den so genannten CLR-Code übersetzt werden. Die CLR
(Common Language Runtime) ist eine virtuelle Maschine und stellt somit die
Laufzeitumgebung für alle unterstützen Sprachen dar. Ein Teil der .NET-Plattform ist
ADO.NET (ActiveX Data Objects .NET). Es handelt sich um eine Sammlung von
Klassen, um den Datenbankzugriff zu gewährleisten. [B_SPONA1]
ColdFusion
ColdFusion ist eine proprietäre Technologie (Adobe, zuvor Macromedia) zur Erstellung
von Web-Applikationen, die grundlegend aus der ColdFusion Markup Language, dem
ColdFusion Application-Server und einer geeigneten Entwicklungsumgebung besteht.
Die CFML (ColdFusion Markup Language) ist eine Skriptsprache, die es ermöglicht,
serverseitige Anwendungen zu programmieren. Sie besteht aus einer Sammlung von
Tags (Steuerzeichen) und Funktionen, die die Entwicklung von Web-Anwendungen
stark vereinfachen. Im Gegensatz zu Skriptsprachen wie PHP und Perl, die Open Source
sind, ist ColdFusion nicht im Quellcode verfügbar. Über gängige Schnittstellen wie
z.B. ODBC oder OLEDB lassen sich Datenbankzugriffe auf Datenbanken problemlos
bewerkstelligen. [B_SPONA1]
-12-
PHP
PHP (PHP: Hypertext Preprocessor) ist eine in HTML eingebettete Skriptsprache für
die dynamische Erzeugung von Webseiten oder Web-Anwendungen, deren Syntax an C
bzw. C++ angelehnt ist. Der Quelletext wird von einem Interpreter auf dem Server
übersetzt und die Ausgabe an den Browser gesendet. In den meisten Fällen ist dies
HTML, wobei es auch möglich ist, andere Dateitypen, wie z.B. Bilder oder PDFDateien, zu generieren. PHP zeichnet sich besonders durch die leichte Erlernbarkeit, die
breite Datenbankanbindung und Internet-Protokolleinbindung aus. Es existieren
zahlreiche zusätzliche Funktions- und Programmbibliotheken, um beispielsweise Bilder
und Grafiken zur Einbindung in Webseiten dynamisch zu generieren. Durch die große
Verbreitung von PHP (beispielsweise in webbasierten Datenbank-Anwendungen,
Content Management Systemen und Software für das Erstellen von Webblogs),
aufgrund des großen Funktionsumfangs und der riesigen Community bietet sich diese
Open Source Software für kleine bis große Projekte an. PHP eignet sich ebenfalls
besonders gut für Datenbankzugriffe, da bereits eine große Bibliothek mit Klassen für
alle gängigen Datenbanksysteme besteht und leicht in die PHP-Skripts eingebunden und
verwendet werden kann. [B_SPONA1][B_WIGAR1]
Datenbankserver mit Webserver-Funktionalität
Um den Datentransport zu minimieren und somit die Leistungsfähigkeit zu erhöhen,
sind Web Server physisch oft am selben Ort wie das Datenbankmanagementsystem.
Dann kann der Webserver allerdings auch gleich in das DBMS verlegt werden. Dies
hätte den Vorteil, dass der Verbindungsauf- und -abbau direkt im DBMS erfolgt.
Folgende
Abbildung
zeigt
einen
in
das
DBMS
integrierten
CGI-basierten
Datenbankanschluss. [B_LOCKE1]
-13-
Abbildung 2: Darstellung einer in das DBMS integrierten CGI-basierten Datenbankanbindung
Übergreifende Techniken
XML (eXtensible Markup Language)
Diese
erweiterbare
Auszeichnungssprache
dient
zur
Darstellung
hierarchisch
strukturierter Daten in Form von Textdateien und wird vorrangig für den Austausch von
Daten zwischen IT-Systemen im Internet eingesetzt. Anders als HTML definiert die
vom World Wide Web Consortium (W3C) herausgegebene XML-Spezifikation eine
Metasprache, mit deren Hilfe man andere Auszeichnungssprachen (Markup-Sprachen)
definieren
kann.
Die
Regeln
für
erlaubte
Elemente,
Attribute
und
Verschachtelungsmöglichkeiten einer XML-gerechten Auszeichnungssprache werden
unabhängig von den eigentlichen Daten in einer so genannten Documenttype-Definition
(DTD) definiert. Ein DTD ist jedoch nicht unbedingt erforderlich. „Wohlgeformte“
XML-Dokumente halten sich an die allgemeinen Regeln und „gültige“ folgen zusätzlich
noch der zum Dokument gehörenden DTD. In Bezug auf Datenbanksysteme mit
Nutzung des XML-Formats unterscheidet man zwischen datenorientierter und
dokumentorientierter Vorgehensweise. „Herkömmliche Datenbanksysteme“ (z.B.
relationale Datenbanksysteme), die eine Abbildung (Mapping) auf oder ins XML-
-14-
Format erlauben (XML-enabled), werden als „datenorientiert bezeichnet“. Und „native
XML-Datenbanksysteme“, die XML-Dokumente direkt im Dateisystem speichern,
gehen „dokumentorientiert“ vor. Aufgrund der Standardisierung und der weiten
Verbreitung von XML wird diese Technik häufig für Datenaustausch und Integration
verwendet. [B_LOESE1]
-15-
3. Sicherheit und Gefahren bei Web-Anwendungen im
Internet
3.1 Informationssicherheit und Schutzziele
Private Unternehmen sowie öffentliche Einrichtungen sind heute in allen Bereichen
ihrer Geschäftstätigkeit auf IT-Systeme und auf die weltweite Vernetzung angewiesen.
Durch die Erreichbarkeit von Computersystemen beziehungsweise Web-Anwendungen
im Internet und durch den damit verbundenen Informationsaustausch von Daten
entstehen auch Gefahren und Bedrohungen. Insbesondere trifft dies auf wirtschaftliche
Unternehmen und auf wissenschaftliche Lehr- und Forschungseinrichtungen zu, da hier
neben der Abhängigkeit auch die Risiken für IT-Systeme größer sind als im privaten
Bereich. Aus diesen Gründen wird die „Informationssicherheit“ überwiegend in
Unternehmen betrieben. Im internationalen und deutschsprachigen Raum kommt die
Verpflichtung durch verschiedene Gesetze, zum Beispiel zum Gesellschaftsrecht,
Haftungsrecht, Datenschutz und Bankenrecht, hinzu.
Die Informationssicherheit dient dem Schutz vor Gefahren beziehungsweise
Bedrohungen sowie der Vermeidung von Schäden und der Minimierung von Risiken.
Als Informationssicherheit bezeichnet man die Eigenschaften von IT-Systemen, die mit
dem Ziel geschaffen wurden, die Verarbeitung, Speicherung und Kommunikation so zu
gestalten, dass die Vertraulichkeit, Verfügbarkeit und Integrität in ausreichendem
Maße sichergestellt wird. Neben diesen drei international anerkannten Sachzielen gibt
es noch viele weitere Ziele, wie z.B. Authentizität, Nachweisbarkeit und
Verbindlichkeit, die oft im Umfeld des E-Commerce eine wichtige Rolle spielen.
Nachfolgend werden die drei wichtigsten Sachziele genauer beschrieben.
Vertraulichkeit bedeutet, dass gespeicherte Daten vor unbefugter Weitergabe geschützt
werden müssen. Einen Verlust der Vertraulichkeit, d.h. die Weitergabe vertraulicher
Daten an Dritte, kann man nicht direkt erkennen und auch nicht rückgängig machen.
-16-
Mit geeigneten Maßnahmen kann ein Verlust der Vertraulichkeit jedoch verhindert
werden.
Von Verfügbarkeit spricht man, wenn das IT-System zum gewünschten Zeitpunkt mit
den erforderlichen Funktionen und Daten zur Verfügung steht. Ob ein System verfügbar
ist, kann man leicht erkennen. Und ein nicht verfügbares System ist bei geeigneter
Vorbereitung
relativ
schnell
wiederherzustellen.
Allerdings
kann
man
eine
Beeinträchtigung nie mit vollständiger Sicherheit verhindern. [I_EILER1]
Die Integrität ist gewährleistet, wenn die Daten vollständig und unverändert sind. Sie
lässt sich mit geeigneten Maßnahmen beweisen. Bei einer Veränderung der Daten
lassen sich diese bei einer ausreichenden Vorbereitung wiederherstellen. Man
unterscheidet zwischen semantischer Integrität, Ablaufintegrität und physischer
Integrität. [I_WLOKA2]
Ein erstes wichtiges Ziel des DBMS ist also, die Konsistenz der Daten als solches nach
den festgelegten Integritätsbedingungen zu gewährleisten. Zusätzlich sind Nutzer bzw.
Programme im Mehrnutzerbetrieb, bei dem gleichzeitig zugreifende Nutzer mit den
selben Daten arbeiten, zu synchronisieren.
Für die Sicherung der physischen Integrität ist das Wiederherstellen von Daten und
Informationen
bei
Verlust
durch
Software-
oder
Hardwarefehler
unbedingt
sicherzustellen. Verursacht werden solche Verluste und die Zerstörung physischer
Bedingungen oft durch Fehler im Betriebssystem, Hauptspeicherfehler, Plattencrashs
aber auch durch Stromausfälle, Brände und Wasserschäden.
Ein weiteres Ziel ist der Schutz geistigen Eigentums. Durch die Vernetzung des
Internets und die Möglichkeit des weltweiten Zugriffes auf verschiedenste Daten kann
man sehr schnell an wichtige und brauchbare Informationen gelangen. Oft stecken
jedoch hinter diesen Daten Erkenntnisse und Informationen langer, arbeits- und
kostenaufwendiger Forschungen, die dann einfach durch dritte Personen im Internet
kopiert und für den eigenen Vorteil genutzt werden. Hier ist es natürlich im Interesse
-17-
der Entwickler und Schöpfer, ihr geistiges Eigentum, auch im Sinne von
Urheberrechten und Lizenzen, vor ungewollten Kopieren und Einsichten zu schützen.
3.2 Schwachpunkte und Angriffsszenarien
Bedrohungen der Datensicherheit können aus verschiedenen Richtungen kommen. Sie
ergeben sich im Wesentlichen aus Angriffen aus dem Netz, aus fehlerhaften und
sorglosen Verhaltensweisen seitens des Personals oder zugangsberechtigter Personen
und aus Einflüssen höherer Gewalt.
Angriffe aus dem Netz oder Internet haben vielerlei Hintergründe. Es geht für den
Angreifer meist darum, für ihn wertvolle Daten auszuspionieren oder Daten und ITSysteme zu zerstören. Auch erpresserische Zwecke (von finanziellen Gewinnen bis hin
zur Durchsetzung politischer Interessen) sind immer wieder anzutreffen.
Vertrauliche Daten können auf vielen Wegen an Unbefugte gelangen. Ein Angreifer
kann eine Schwachstelle nutzen, um von außen in das lokale Netz beziehungsweise in
den lokalen Computer einzudringen und die Daten zu kopieren. Oder es kann zum
Beispiel ein Trojaner per E-Mail eingeschleust werden, der eine Hintertür öffnet oder
die vertraulichen Daten direkt an den Angreifer zurückschickt. Auch von innen ist die
Vertraulichkeit gefährdet, wenn zum Beispiel Mitarbeiter unbefugt Daten absichtlich
oder unabsichtlich weitergeben.
Mögliche Angriffe gegen die Verfügbarkeit sind zum Beispiel auch infizierende, sich
vermehrende Computerprogramme, Computerviren, Würmer oder Trojaner, welche die
Funktion der Software beeinträchtigen, oder Denial-of-Service-Angriffe auf die
Netzwerkverbindung. Auch Angriffe auf die Hardware wie Brandstiftung oder
Störungen der Stromversorgung sind möglich.
-18-
Datenintegritäten können an mehreren Stellen verletzt werden. Auf dem lokalen ITSystem können die gespeicherten Daten direkt verändert oder die zur Verarbeitung
verwendeten Anwendungen entsprechend manipuliert werden. Genauso ist eine
Veränderung der Daten während der Übertragung zwischen verschiedenen IT-Systemen
möglich.
Phishing, Cross Site Scripting und SQL-Injection sind einige der meist verbreiteten
Gefahren für Fremdzugriffe und Datenklau. Diese werden im Folgenden genauer
erläutert.
Phishing
Ein schwer zu verhindernder Fremdzugriff ist der Zugriff durch Personen, die an ein
Passwort für den Zugang durch andere Methoden gelangt sind. Einer dieser Methoden
ist beispielsweise das „Phishing“, sinnbildlich „Das Angeln nach Passwörtern mit
Ködern“. Diese Personen (Phisher) geben sich meist als vertrauenswürdige Personen
aus und versuchen, durch gefälschte elektronische Nachrichten oder Webseiten an
sensible Daten wie Benutzernamen und Passwörter zu gelangen. [B_HUSEB1]
[Z_RÜTTG1]
Cross Site Scripting
Die verbreitetste Angriffsform ist das so genannte Cross Site Scripting, abgekürzt CSS
oder XSS, bei dem ein Angreifer versucht, die Web-Anwendung so zu manipulieren,
dass sie schädlichen Skriptcode (z.B. JavaScript-Code) in die beim Besucher angezeigte
Seite einbettet. Der Browser verarbeitet dann den eingeschleusten Code als wäre es ein
legitimer Inhalt der Webseite. Ein Angreifer kann dann mit dem eingebetteten Code
beispielsweise „falsche“ Informationen als Inhalte der Webseite verkaufen, um
Passwörter oder Kontodaten zu erbeuten (Phishing). Es gibt mehrere Haupttypen von
XSS, je nach dem, auf welchem Weg der Schadcode in den Browser gelangt. Das am
häufigsten anzutreffende Cross Site Scripting ist das so genannte reflektierte XSS. Beim
reflektierten XSS muss der Angreifer das Opfer dazu bringen, eine präparierte URL
anzuklicken (dieser Link kann z.B. über eine Seite oder per E-Mail an das Opfer
gelangen). In Variablenparametern dieser URL versteckt er dabei Codes, welche die
-19-
fehlerhafte Anwendung auf der Serverseite übernimmt und als vermeintlichen
Benutzernamen, E-Mail-Adresse oder Suchausdruck in die dynamisch erzeugte
Webseite einbettet. Da der eingebettete Code (z.B. JavaScript-Code) für den Browser
des Opfers anscheinend von einer vertrauenswürdigen Webseite stammt, wird er nicht
als
schädlich
bzw.
unerwünscht
erkannt,
sondern
ausgeführt.
[B_HUSEB1]
[Z_RÜTTG1]
SQL-Injection
Dieser Begriff bezeichnet das Ausnutzen einer Sicherheitslücke bei SQL-Datenbanken,
welche aus mangelnder Überprüfung von Metazeichen in Benutzereingaben auf
Eingabemasken hervorgeht. Ein großer Teil von Web-Anwendungen arbeitet heutzutage
mit einer SQL-Datenbank. Ein Angreifer versucht daher, über die Web-Anwendung
eigene Datenbankbefehle einzuschleusen, mit dem Ziel, Daten in seinem Sinne zu
verändern oder sogar die Kontrolle über den Server zu erlangen. [B_HUSEB1]
[Z_RÜTTG1]
3.3 Schutzmaßnahmen und –techniken
3.3.1
Verhindern von Fremdzugriffen und –übernahmen
Es gibt keine Software, die vollkommene Sicherheit vor jeder Art von Angriffen bietet.
Daher kann man nur versuchen, mit gegebenen technischen Mitteln und Techniken
bekannte und vermeintliche Sicherheitslücken zu schließen. Im Allgemeinen sollten die
Maßnahmen zur Verhinderung von Fremdzugriffen und Angriffen im Rahmen der
Erstellung eines Sicherheitskonzeptes an den Wert der zu schützenden Daten angepasst
werden. Aufwendiger Schutz verursacht hohe Kosten und Akzeptanzprobleme, ein zu
geringer Aufwand wiederum führt zu Sicherheitslücken.
Zur Bewertung und Zertifizierung der Sicherheit von IT-Systemen existieren
internationale Normen und Standards, wie zum Beispiel die amerikanischen TCSEC und
-20-
die europäischen ITSEC, welche im neueren internationalen Standard Common Criteria
vereinigt wurden. [I_COMMO1]
Informationsschutz- und Sicherheitsrichtlinien sind in Unternehmen oder Einrichtungen
Aufgaben des Managements. Dabei beginnen Maßnahmen gegen die Verletzung von
Sicherheitsrichtlinien und Fremdzugriffen in erster Linie schon mit der Ansprache und
Sensibilisierung der eigenen Mitarbeiter hinsichtlich möglicher Verstöße gegen die
Firmenrichtlinien. Aber auch einfache operative Maßnahmen, wie SoftwareAktualisierungen, Einrichten von Firewalls, Setzen von Passwörtern, Nutzer- und
Rechteverwaltung und das Protokollieren von Aktionen in Protokoll-Dateien, schließen
mögliche Sicherheitslücken und tragen zum Schutz vor unerwünschtem Zugriff bei.
Im Folgenden wird auf einige allgemeine und typische Schutzmaßnahmen bei der
Entwicklung webbasierter Anwendungen, Web- und Datenbankservern mit Bezug auf
die in Punkt 3.2 aufgezeigten Schwachpunkte und Angriffszenarien eingegangen.
Passwörter
Um Datenbanken und die darin enthaltenen Informationen vor ungewollten Zugriffen
durch Fremde zu sichern, hilft schon ein einfacher Passwortschutz. Nicht-triviale
Passwörter herauszufinden oder zu knacken, erfordert sehr viel Fachkenntnis und zum
Teil spezielle Programme, die den meisten Computeranwendern nicht zugänglich sind.
Deshalb sind Passwörter bei Datenbanken heutzutage bereits bei der Installation oder
Einrichtung zwangsläufig mit dem Anlegen des ersten Benutzers zu setzen. Sie stellen
eine erste sichere Methode zum Schutz vor Fremdzugriffen dar.
Firewalls
Eine Firewall dient dazu den Datenverkehr zwischen Netzwerksegmenten mit
verschiedenen Vertrauensstufen abzusichern. Sie schützt nicht nur vor unerwünschten
Zugriffen auf einen Computer oder auf ein Netzwerk, sondern auch vor
unbeabsichtigten Zugriffen vom eigenen Rechner nach außen, die von systemeigenen
Anwendungen oder Prozessen ausgehen und oft gar nicht bemerkt werden. Deshalb ist
die Installation einer Netzwerk- oder Personal-Firewall unerlässlich.
-21-
Antivirenprogramme
Ebenso unerlässlich ist der Schutz vor Viren und Trojanern, die beispielsweise
versuchen, unbemerkt sensible Daten von einem IT-System zu versenden oder durch
Zerstörung von Daten erheblichen Schaden anzurichten. Viren oder Trojaner können
sehr leicht über das Internet mittels E-Mail oder Kopieren von Daten aus Datenträgern
in ein System gelangen. Deshalb ist ein entsprechendes Antivirenprogramm zu
installieren und regelmäßig zu aktualisieren.
Benutzereingaben
Schnittstellen für Benutzereingaben bergen wahrscheinlich die größten Risiken für die
Sicherheit einer Web-Anwendung in sich. Bei der Entwicklung von Webseiten oder
anderen softwaretechnischen Benutzerschnittstellen mit Anbindung an eine Datenbank
sind daher jegliche Eingaben von Nutzern auf Gültigkeit zu prüfen. Hierbei sind alle
eingegebenen Daten zu filtern, und es ist festzustellen, ob ein Eingabeparameter gemäß
den von einer Anwendung festgesetzten Regeln (zum Beispiel Sonderzeichen,
Datentyp, Zeichenlänge, usw.) gültig ist. Dabei gibt es für die Filterung der
eingegebenen Daten allgemein zwei Herangehensweisen: Whitelisting und Blacklisting.
Beim Blacklisting werden alle bekannten unerwünschten Daten, von denen eine Gefahr
angenommen wird, in einer Liste festgehalten und alle anderen Eingaben sind erlaubt.
Beim Whitelisting werden alle erlaubten Daten, die für „harmlos“ gehalten werden, in
einer Liste aufgenommen und alle anderen Eingaben sind verboten. Das Whitelisting ist
der bevorzugte Ansatz im Sicherheitskontext, da er nur Eingaben und Daten zulässt, die
der Anwendung bekannt sind. [B_HUSEB1]
Ausgabebehandlung
Die Behandlung der Ausgaben einer Web-Anwendung auf dem Browser ist ebenso eine
wichtige Maßnahme zum Schutz vor Angriffen. Wie im Abschnitt 3.2 erläutert, kann
mittels Cross Site Scripting schadhafter Code auf der Seite des Anwenders ausgeführt
werden. Auf Seiten des Anwenders (Clients) kann man sich schon mit dem Abschalten
von JavaScript im Browser ganz gut gegen XSS-Angriffe schützen. Jedoch bieten
einige Browser noch andere Schwachstellen und Angriffsvektoren, weshalb es auch
schon softwaretechnische Erweiterungen gibt, mit denen man gezielt mögliche XSS-
-22-
Angriffe erkennt und verhindern kann. Um eine Web-Anwendung serverseitig vor
einem Angriff zu schützen, müssen alle eingehenden Parameterwerte und Eingaben als
unsicher betrachtet werden und am besten anhand einer Whitelist vor einer weiteren
Verarbeitung geprüft werden. Bei HTML-Ausgaben sollte man zum Beispiel
Metazeichen durch entsprechende Zeichenreferenzen entwerten, damit sie als normale
Zeichen und nicht mehr als Metazeichen behandelt werden. [B_HUSEB1]
3.3.2
Verschlüsselungsstrategien
Das Verschlüsseln von Daten hat eine lange Tradition. Mit der elektronischen
Datenverarbeitung und dem Internet erlangt es jedoch eine neue Qualität und
Bedeutung. Daten zu verschlüsseln, ergibt sich aus der Notwendigkeit, sie bei der
Übertragung in lokalen Netzwerken oder im Internet zu schützen aber auch, um
Passwörter oder ähnlich geheime Daten auf der Datenbank selbst nicht lesbar
abzuspeichern. Daten können mittels verschiedenster Methoden verschlüsselt werden.
Dabei werden immer ein klar lesbarer Text (Klartext) oder auch Informationen anderer
Art, wie Ton- oder Bildaufzeichnungen, mit Hilfe eines Verschlüsselungsverfahrens in
einen unlesbaren (kryptischen) Text umgewandelt. [B_HUSEB1]
Für die Datenübertragung im Internet wird sehr häufig das „Secure Socket Layer“
(SSL) Verschlüsselungs-Protokoll eingesetzt, welches heutzutage von jedem gängigen
Webserver unterstützt wird. Mit SSL kann man jedes höhere Protokoll auf Basis des
SSL-Protokolls implementieren, da es oberhalb der Transportschicht im „OSI-Modell“
und unter Anwendungsprotokollen wie „http“ und „smtp“ angesiedelt ist. Damit ist eine
Unabhängigkeit von Anwendungen und Systemen gewährleistet. [B_STEIN1]
[I_ELEKT1]
Für die Übertragung und für das Abspeichern von Daten werden im Allgemeinen
unterschiedliche Methoden angewandt. PGP ist eine Verschlüsselungstechnik, die für
die Übertragung von Daten in einem Netzwerk benutzt wird. MD5 und SHA-1 sind
-23-
hingegen zwei Methoden, die Daten und Klartext für das Abspeichern in der Datenbank
verschlüsseln. Diese 3 Beispiele werden im Folgenden genauer dargestellt:
-
PGP
Pretty Good Privacy (PGP) ist ein von Phil Zimmermann entwickeltes
Programm zur Verschlüsselung von Daten. Es benutzt ein so genanntes „PublicKey“-Verfahren, d.h. es gibt ein eindeutig zugeordnetes Schlüsselpaar.
Bei diesem asymmetrischen Verfahren verwenden der Sender und Empfänger
zwei unterschiedliche Schlüssel. Jeder besitzt einen öffentlichen Schlüssel, mit
dem die zu versendenden Daten für den Empfänger verschlüsselt werden
können, und einen geheimen privaten Schlüssel zu Entschlüsselung der Daten,
den nur der Empfänger besitzt und der durch ein Kennwort geschützt ist.
[I_DATEN1]
-
MD5 und SHA-1
MD5 (Message-Digest-Algorithm 5) und SHA (secure hash algorithm)
bezeichnen
kryptographische
Hash-Funktionen
mit
einer
Einweg-
Verschlüsselung. Das heißt, dass eine beliebig große Zeichenfolge auf eine
bestimmte Zielmenge abgebildet wird. Aus der Zielmenge, auch Hash- oder
Prüfsumme
genannt,
soll
sich
die
ursprüngliche
Zeichenfolge
nicht
zurückrechnen lassen. Es soll also unmöglich sein, zwei verschiedene
Informationen mit dem gleichen Wert zu finden. Dies wird auch als
Kollisionsfreiheit bezeichnet.
MD5 ist eine Funktion die einen 128-Bit-Hash-Wert erzeugt. Diese aus einem
Text errechneten MD5-Summen werden zum Beispiel zur Integritätsprüfung von
Dateien, unter anderem auch von PGP, eingesetzt.
SHA-1 erzeugt einen Hash-Wert mit 160 Bit Länge für beliebige digitale Daten.
Mit dem längeren Hash-Wert ist SHA etwas widerstandsfähiger als MD5. Für
SHA gibt es inzwischen auch zahlreiche Erweiterungen wie SHA- 256, -384
oder -512. [B_STEIN1] [I_JAKL1]
-24-
Beide Versschlüsselungsverfahren MD5 und SHA-1 sind jedoch nach neuesten
Erkenntnissen nicht hundertprozentig sicher und können mit gewissem Aufwand
entschlüsselt werden.
-25-
4. Administration von Datenbanken im Web
In diesem Kapitel geht es um die grundlegenden Aufgaben der DatenbankAdministration, die sich auch auf Datenbanken im Web beziehen lassen.
4.1 Grundlegende Konzepte der Datenbank-Administration
Ein Datenbank-Administrator (DBA) ist für die Verwaltung eines Datenbankmanagementsystems verantwortlich und beherrscht Datenbanksprachen und diverse
Datenbank-Tools. Dabei ist der Begriff des Datenbank-Administrators eher als Rolle zu
verstehen und muss keine einzelne Person verkörpern. Die Aufgaben können auch auf
mehrere Administratoren verteilt sein.
Nachfolgend werden zunächst die grundlegenden Aufgaben des DatenbankAdministrators aufgezählt. Wichtige Punkte, besonders mit Bezug auf Datenbanken im
Web, werden in den folgenden Kapiteln genauer erläutert. Zu den Hauptaufgaben eines
DBA zählen:
Einrichten und Konfigurieren von Hard- und Software
Hier spielt die Architektur des Datenbankmodells und der Datenbank eine wichtige
Rolle. Wie viele Rechner mit welcher Kapazität (Laufwerke, Hauptspeicher, usw.)
werden benötigt, auf welcher Plattform soll das DBMS mit wie vielen DatenbankServern (Instanzen) laufen, sind nur einige Fragen bei der Konfiguration und
Einrichtung des Datenbankmanagementsystems.
Administration des Datenbankmodells
Das Datenbankmodell stellt die Grundlage für eine Datenbank dar und bestimmt wie die
Daten auf der Datenbank gespeichert werden. Dies ist maßgebend für die Qualität der
Datenbank, bedeutend für den logischen Aufbau der Daten sowie für die Datenbank-
-26-
Performance. Eine Optimierung und Anpassung des Modells ist ein ständiger Prozess
und für ein effektives Arbeiten mit der Datenbank notwendig.
Planung und Verwaltung von Tablespaces
Ein Tablespace ist eine physische Datenstruktur, ein Speicherort, an dem die
Datenbankobjekte, wie zum Beispiel Tabellen und Indizes, abgelegt werden. Eine
Datenbank besteht in der Regel aus mehreren Tablespaces. Für jedes Objekt ist beim
Anlegen zu entscheiden, in welchem Tablespace es liegen soll. Diese logische
Konfiguration einer Datenbank und die Auswahl des richtigen Tablespace-Layouts sind
entscheidend für die spätere Performance und die anfallenden Verwaltungsaufgaben.
[B_LONEY1]
Überwachung des Speicherplatzes
Neben der Überwachung der Performance, Transaktionen und der Sicherheitsprüfungen
müssen auch ständig alle kritischen Faktoren beobachtet werden, die für den effektiven
Betrieb der Datenbank verantwortlich sind. Hierbei spielt die Überwachung des
Speicherplatzes eine nicht unwesentliche Rolle, um die Verfügbarkeit und effektive
Verwaltung einer Datenbank zu gewährleisten. Aufgabe der Administration ist es also,
permanente Probleme beim Speicherplatz zu vermeiden. [B_LONEY1]
Verwaltung von Transaktionen
Um die ACID-Eigenschaften (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit) in
einem Transaktionssystem bei Transaktionen zu garantieren, müssen diese verwaltet
werden. Hierbei spielen zum Beispiel die Administration von Rollback-Segmenten und
Undo-Methoden eine große Rolle. Transaktionsfehler und Maßnahmen sind genauer im
folgenden Kapitel 4.3 (Datensicherung) beschrieben. [B_LONEY1]
Tuning und Abfrageoptimierung
Das Tuning von Datenbankanwendungen setzt zunächst die Planung, Implementierung
und Überwachung voraus und steht am Ende dieses vierstufigen Prozesses. Gerade bei
Datenbanken im Web jedoch kann dieses Performance-Tuning noch bedeutungsvoller
-27-
sein. Im Kapitel 4.4 wird deswegen darauf genauer eingegangen und verschiedene
Aktivitäten in diesem Bereich beschrieben. [B_LONEY1]
Überwachung der Datensicherheit
Eine der wichtigsten Aufgaben ist die Überwachung der Datensicherheit. Dabei spielt
der Schutz von nicht autorisierten Zugriffen eine große Rolle. Diese Zugriffsversuche
gilt es zu erkennen und zu verhindern. Das Auditing oder Protokollieren hilft dabei, alle
Aktionen, die auf der Datenbank oder auf einem IT-System allgemein ausgeführt
wurden, zu überblicken, auszuwerten und ggf. Maßnahmen zu ergreifen. Mehr dazu im
Kapitel 4.5 (Auditing und Protokollierung).
Datensicherung
Um den Verlust von Daten zu verhindern, ist es unbedingt notwendig, eine
Datensicherung der Datenbank anzulegen und diese bei Auftreten eines Fehlers
möglichst
verlustfrei
wiederherzustellen.
Hierfür
stehen
dem
Administrator
verschiedenste Möglichkeiten und Funktionen der Datenbank zur Verfügung. Im
Kapitel 4.3 wird hierzu näher eingegangen.
Sicherung der operationalen Integrität
Greifen mehrere Nutzer auf ein und dieselben Daten auf der Datenbank zu, kann es zu
Fehlern im Datenbestand kommen, obwohl jeder Nutzer für sich fehlerfrei arbeitet. Die
Synchronisation
dieser
Nutzer
bzw.
Transaktionen
ist
Aufgabe
des
Datenbankmanagementsystems. Der Administrator muss auf diese Situation mit
angepassten Verfahren, zum Beispiel verschiedene Sperrverfahren, reagieren. Gerade
bei der Nutzung einer Datenbank mit einer hohen Zugriffsrate ist diese Verletzung der
Ablaufintegrität wahrscheinlich und sollte unbedingt behandelt werden.
Nutzer- und Rechteverwaltung
Eine weitere Aufgabe des Datenbank-Administrators ist das Einrichten und die Vergabe
von Rechten auf Nutzergruppen. Im folgenden Kapitel 4.2 ist diese wichtige Einteilung
von Gruppen und Rechten im Sinne der Zugriffskontrolle expliziter erläutert.
-28-
Verbessern des Fehlermanagements
Durch eine Verbesserung in der Erkennung und Beseitigung von Fehlerquellen sowie
durch schnelle und geeignete Reaktionen auf Fehler, kann die Qualität und Sicherheit
des Systems erhöht werden. Kapitel 4.6 beschäftigt sich ausführlicher mit diesem
Thema.
4.2 Rechte- und Nutzerverwaltung
Auf einer Datenbank liegen meist viele verschiedene Daten: Daten für die
Systemverwaltung, Userdaten, geheime Daten, Nutzdaten, usw. Aus Gründen der
Daten- und Informationssicherheit (siehe Kapitel 3.1) und zum Schutz der
Datenintegrität ist es notwendig, verschiedenen Nutzern der Datenbank verschiedene
Rechte für den Zugriff auf Daten zu vergeben.
Die Aufgabe des Administrators bei der Rechte- und Nutzerverwaltung besteht darin,
ein Konzept für die Einteilung und Einrichtung von Nutzer, Rollen, Profilen sowie zur
Verwaltung von Rechten für den Zugriff auf Datenbanken, Tabellen, Spalten oder sogar
nur einzelner Informationen zu entwickeln. In der Regel werden bei größeren
Datenbanken drei große Nutzergruppen oder -rollen in Betracht gezogen.
Der „Administrator“ - besitzt alle Rechte und den Vollzugriff auf das gesamte
Datenbanksystem samt Infrastruktur. Er ist für die Planung, Überwachung und
Steuerung aller Komponenten zuständig und setzt damit die Voraussetzung für die
Nutzung des Systems auf operativer Ebene.
Der „dbo“ („database owner“ - Dateneigner) - besitzt meist Rechte und Vollzugriff auf
eine spezielle Datenbank. Auf einem Datenbanksystem können durchaus mehrere
Datenbankeigner angelegt sein.
-29-
Der „User“ - arbeitet ausschließlich auf der operativen Ebene und besitzt ausgewählte
Rechte meist auf Tabellen einer Datenbank. Er wird allerdings in der Praxis noch in
weitere Untergruppen mit verschiedenen Zugriffsrechten aufgegliedert. [B_HEINR1]
4.3 Datensicherung
Eine wichtige Aufgabe von Datenbankmanagementsystemen und deren Administration
liegt in der Gewährleistung einer weitgehenden Datensicherung. Trotz Auftretens von
Fehlern verschiedener Art ist die Konsistenz der Datenbank automatisch zu wahren und
Datenverlust zu verhindern. Die Fehlerbehandlung ist meist Aufgabe der „Recovery“Komponente des DBMS, welche neben den eigentlichen Datenbankinhalten redundante
Informationen benötigt und durch „Logging“ zu protokollieren sind.
Angelehnt an „Datenbanksysteme“ von Härder und Rahm [B_HÄRDE1] werden im
Folgenden zunächst die zu behandelnden Fehlerarten eines Datenbanksystems
betrachtet und die sich daraus ableitenden Recovery-Arten beschrieben.
Transaktionsfehler
Transaktionsfehler sind die mit Abstand häufigste Fehlerart, bei der meist eine
Transaktion oder einige wenige Transaktionen betroffen sind. Beispiele für das
Auftreten solcher Fehler sind unter anderem:
-
Rollback-Anweisung bei freiwilligem Transaktionsabbruch (z.B. aufgrund
unzulässiger Dateneingabe oder nicht erfolgreicher Datenbank-Operationen)
-
Fehler im Transaktionsprogramm (z.B. Adressierungsfehler oder Division durch
Null)
-
Abbruch einer Transaktion vom System (z.B. aufgrund Verletzungen von
Integritätsbedingungen oder Zugriffsbeschränkungen)
-
Systemseitiger Abbruch von einer oder mehreren Transaktionen zur Auflösung
von Verklemmungen, zur Behandlung von Systemüberlastungen (z.B. Sperroder Speicherengpässen) oder aufgrund einer geplanten Systemschließung usw.
-30-
Aufgrund der Atomarität, daher, dass eine Transaktion entweder ganz oder gar nicht
ausgeführt wird, verlangt die Behandlung solcher Fehler das isolierte Zurücksetzen der
betroffenen Transaktion im laufenden Betrieb. Es handelt sich um das „UndoRecovery“, welches durch die relative Häufigkeit von auftretenden Transaktionsfehlern
einer schnellen Ausführung bedarf.
Systemfehler
Ein Systemfehler liegt vor, wenn der weitere Betrieb des DBS nicht mehr möglich ist.
Dies kann durch Fehler der Hardware (z.B. Rechnerausfall) oder Software (z.B. Absturz
des
Datenbank-
oder
Betriebssystems)
sowie
durch
Umgebungsfehler
(z.B.
Stromausfall) verursacht sein. Alle Änderungen und Inhalte, die zum Zeitpunkt des
Absturzes im Hauptspeicher vorlagen, gehen verloren und müssen ggf. rekonstruiert
werden.
Die Behandlung von Systemfehlern erfolgt durch das so genannte „Crash-Recovery“,
welches zum Ziel hat, den jüngsten transaktionskonsistenten Datenbankzustand
herzustellen. Hierzu sind
-
im Rahmen einer „Undo-Recovery“ Änderungen von nicht erfolgreich zu Ende
gekommenen Transaktionen, welche vor dem Fehler in die Datenbank
gelangten, zurückzusetzen sowie
-
durch eine „Redo-Recovery“ für erfolgreich beendete Transaktionen deren
Änderungen zu wiederholen, falls sie aufgrund des Systemfehlers noch nicht in
die Datenbank gelangten.
Die Durchführung dieser Recovery-Aktionen erfolgt mit der permanenten Datenbank
sowie der temporären Log-Datei.
Geräte- bzw. Externspeicherfehler
Hiermit ist vor allem der Ausfall von Magnetplatten (z.B. durch einen „Head Crash“)
gemeint. Bei der Behandlung solcher Fehler kommt in erster Linie das „RedoRecovery“ zum Wiederherstellen der durch den Ausfall verloren gegangenen
Änderungen zum Einsatz. Grundlage für die Rekonstruktion sind regelmäßig angelegte
-31-
Archivkopien der Datenbank (Backups), welche zunächst eingespielt werden, um den
Grunddatenbestand wiederherzustellen. Danach werden zusätzlich alle Änderungen
erfolgreicher Transaktionen, die nach der Erstellung des Backups gemacht wurden, mit
dem Archiv-Log ergänzt.
Bei höherer Gewalt oder Katastrophen, bei denen beispielsweise gleich ein ganzes
Rechenzentrum samt Verarbeitungsrechner und Externspeicher betroffen ist, kann ein
Datenverlust nur über einen verteilten Systemansatz verhindert werden. Dazu müssten
die Daten an zwei oder mehr geographisch weit entfernten Knoten repliziert gespeichert
werden.
4.4 Tuning und Abfrageoptimierung
Bei Datenbanken in Netzwerken und besonders Datenbanken, die vom Internet aus
erreichbar und somit einer hohen Abfragefrequenz ausgesetzt sind, entsteht schnell der
Bedarf von Performance-Tuning. Dabei ist das Tuning in erster Linie nicht nur das
Aufrüsten der Hardware, sondern eher das Optimieren des Anwendungs- und
Tabellendesigns, der Fehlerbehandlung sowie der SQL-Abfragen.
Tabellendesign
Die Qualität der Datenbank ist äußerst wichtig für die Performance und setzt ein
sauberes effektives Design der Tabellen voraus. Auch das volle relationale
Tabellendesign (dritte Normalform) ist gerade bei großen und langen Abfragen nicht
immer die optimale Lösung. Hier sollten die Entwickler beim Design der Tabellen sogar
eine Denormalisierung der Daten in Betracht ziehen, zum Beispiel mit dem Anlegen
kleiner zusammenfassender Tabellen aus großen statischen Tabellen.
CPU-Belastung
Begrenzte CPU-Ressourcen können ebenfalls mit gezielten Maßnahmen optimiert
werden. Die Belastung der CPU(s) sollte sorgfältig geplant werden. Update-Programme
-32-
oder große Batch-Abfragen sollten beispielsweise nicht in der Hauptkernzeit laufen.
Lässt man diese Prozesse zum richtigen Zeitpunkt laufen, minimiert man Konflikte bei
der CPU oder bei eventuell entstehenden Sperren und Rollbacks. Eine weitere Option
wäre die Verteilung der Abfragen und Datenbankzugriffe auf mehrere Instanzen (daher
Datenbank-Server), wenn es die gegebene Technologie zulässt.
SQL-Tuning
Neben dem Anwendungsdesign ist das Tuning von SQL-Abfragen ganz entscheidend
für die Performance einer guten Anwendung mit Datenbankzugriff. Dabei ist die
Minimierung des Suchpfades, den die Datenbank zum Auffinden der Daten einsetzt, das
eigentliche Ziel beim SQL-Tuning. Für die schnellere Suche nach Abfrage eines SQLStatements werden auf der Datenbank auch Indizes eingesetzt. Diese bilden die
logischen Werte in einer Tabelle ab und verweisen auf eine oder mehrere Spalten. Eine
von der Datenstruktur getrennte Indexstruktur sorgt für die rasche Sortierung und Suche
von Feldern. Dies ist vor allem für die Nutzung bei Datenbanken im Web mit vielen
Nutzerzugriffen von Bedeutung.
Speicher-Tuning
Einen weiteren Gewinn an Performance der Datenbank erhält man mit der Optimierung
beim Speichern von Daten. Wie die Daten auf der Datenbank eigentlich gespeichert
sind, hat vor allem bei Abfragen einen Einfluss. Sind die Daten fragmentiert
gespeichert, d.h. beispielsweise auf mehreren physischen Standorten, kann ein Einfügen
oder Suchen von Datensätze schon sehr viel länger dauern und die Performance
reduzieren. Also sollten Daten und Segmente defragmentiert und ähnliche Objekte
zusammen gespeichert werden.
Speicher-Tuning beinhaltet auch das Tuning des physischen Speichers. Hierbei spielt
das physische Layout der Datenbank eine wichtige Rolle für die Verteilung der Daten
auf die Laufwerke. Dabei muss die physische Ein- und Ausgabe der Datenbanken
gleichmäßig verteilt und korrekt bedient werden. Ein Implementieren einer RAIDTechnologie (z.B. RAID 0+1) bringt allgemein eine sehr gute Performance.
-33-
Replikation
Die mehrfache Speicherung der Daten an verschiedenen Orten (Replikation) hat gleich
mehrere Vorteile. Durch Kopieren und Verteilen der Daten verringert sich die Belastung
des Netzwerkes. Eine potenzielle Quelle für Performance-Probleme kann somit gleich
umgangen werden. Weiterhin werden die Antwortzeiten, gerade bei lesendem Zugriff,
verkürzt. Ein weiterer Vorteil der Replikation ist die gleichzeitige Datensicherung, die
das Kopieren der Daten mit sich bringt. [B_LONEY1]
4.5 Auditing und Protokollierung
Um bestimmte Aktionen von Prozessen und Abläufen auf einem System
zurückzuverfolgen, wird in den meisten Fällen eine Protokolldatei (oder auch Log-Datei
genannt) angelegt. Auditing bezeichnet hier das Überwachen von ausgeführten
Aktionen auf einer Datenbank.
Der Grund für die Überwachung kann sehr vielfältig sein. Ein Protokoll ermöglicht in
erster Linie, Vorgänge zu rekonstruieren, um Fehler oder Fehlfunktionen im System zu
analysieren oder zu vermeiden. Protokolle dienen aber auch der Kontrolle der Abläufe
bzw. Operationen und Entitäten, entweder im Voraus, gegenwärtig oder im Nachhinein.
Daher werden an die Protokollierung im Sinne einer beweisfesten und revisionssicheren
Aufzeichnung hohe Anforderungen im Bezug auf Relevanz, Gültigkeit und
Zuverlässigkeit, Fälschungssicherheit (Integrität), Authentizität und Vertraulichkeit
gestellt.
Datenbankensysteme können in der Regel auch alle ausgeführten Aktionen überwachen.
Dies beinhaltet meistens Anmeldeversuche, Objektzugriffe und Datenbankaktionen. Die
Audit-Datensätze werden entweder im Datenbanksystem gespeichert oder ins
Prüfprotokoll des Betriebssystems geschrieben. Die Speicherung in ein Prüfprotokoll
auf Systemebene hängt jedoch vom jeweiligen Betriebssystem ab. [B_LONEY1]
-34-
Log- und Protokolldateien werden also oft schon von verschiedensten Servern
automatisch erstellt. Sie können aber auch zusätzlich angelegt werden und bei der
Untersuchung der Benutzerfreundlichkeit von Programmen oder des allgemeinen
Nutzerverhaltens in einem System angewandt werden. Dazu helfen statistische
Erhebungen und Histogramme über Herkunft, Verhaltensweisen, Zugriffsfrequenz der
Nutzer, die bei der Auswertung von Protokollen für die Optimierung der Seite erstellt
und analysiert werden können. Hierbei kann beispielsweise festgestellt werden, ob der
Nutzer mit der Seitenführung und Navigation klarkommt, oder ob er in Sackgassen
geraten ist. Ferner können Nutzerzugriffe, erzeugte Fehler und weitere Ergebnisse
erkannt und ggf. darauf reagiert werden.
4.6 Fehlermanagement
Einer der wichtigsten Tätigkeiten bei der Administration jeglicher IT-Systeme ist das
Fehlermanagement. In ihm werden alle möglichen auftretenden Fehler und
Reaktionsmöglichkeiten festgehalten, um einen Fehler zu beheben oder zunächst seine
Auswirkungen zu begrenzen.
Das Auftreten von Fehlern in einem Mensch-Maschine-System kann verschiedene
Ursachen haben. Potentielle Fehler können unter anderem sein:
-
Fehler bei der Eingabe des Nutzers (Evaluierung von Eingabefeldern)
-
Fehler in der Anwendung (Softwarefehler z.B. Laufzeitfehler)
-
Fehler in der Hardware (z.B. Systemausfall, Serverausfall, Katastrophen)
-
Fehler im Netzwerk (z.B. durch Ausfall des Netzes oder zu hohe Netzlast)
-
Fehler im Betriebssystem (auch Absturz des DBMS oder andere Komponenten)
-
Begrenzte Rechte (z.B. Zugriffsrechte, keine Schreib- oder Leserechte)
Ein gutes Fehlermanagement sollte mehrere Ziele anstreben. Bei „leichten“ Fehlern
sollte die Anwendung dem Nutzer hilfreiche und verständliche Hinweise geben. Bei
ernsthaften Fehlern sollte der Entwickler oder Administrator möglichst automatisch
-35-
über die Fehler und ggf. über die Zusammenhänge und Ursachen, die den Fehler
ausgelöst haben, informiert werden. [B_LOESE1] Hierzu stehen verschiedene
Vorgehensweisen zur Verfügung. Zum einen können Meldungen, Warnungen und
Fehlerbeschreibungen in eine Protokolldatei (Log-Datei) geschrieben werden, die
regelmäßig von den zuständigen Personen zu überwachen ist. Eine weitere Möglichkeit
besteht in der automatischen Mitteilung an den Administrator per E-Mail oder anderer
Alarmierungsdienste durch die Softwareanwendung selbst oder durch benutzerdefinierte
Funktionen im Datenbanksystem. Sieht man von kompletten Systemabstürzen ab, sollte
dies in den meisten Fehlersituationen möglich sein.
-36-
5. ISDA: Ausgangssituation und Ist-Analyse
5.1 Das Verbundprojekt ISDA zur Verwaltung chemischer
Stoffdaten
ISDA („Integriertes Sorptions-Datenbankensystem für Wechselwirkungen chemischtoxischer und radioaktiver Kontaminanten mit mineralischen Systemen.“) bezeichnet
ein Projekt, welches zwei bereits bestehende Datenbanken im Bereich der Deponierung
von
chemisch-toxischen
und
radioaktiven
Stoffen
zu
einem
gemeinsamen
Datenbanksystem zusammenführt.
Bei jeglichen Entsorgungseinrichtungen von gefährlichen Abfällen, sei es untertägig
oder in oberirdischen Deponien, ist die Gewährleistung der Sicherheit von
entscheidender Bedeutung. Insbesondere ist die Ausbreitung der toxischen Abfallbestandteile in die Biosphäre zu vermeiden. Hierbei ist sowohl die Aufnahme von
Schadstoffen über Boden und Grundwasser durch Pflanzen und Tiere, und damit in die
menschliche Nahrungskette, als auch eine direkte Aufnahme durch den Menschen über
Trinkwasser oder Schwebteilchen in der Luft (Aerosole) zu beachten. Für das
Ausbreitungsverhalten von Schadstoffen in der Umwelt gibt es verschiedenen Modelle,
welche in so genannten Langzeitsicherheitsprognosen für Schadstoffdeponien eingesetzt
werden. Solche Modelle benötigen natürlich eine entsprechende Parametrisierung. Für
den wichtigen Teilaspekt der Sorption, d.h. der chemischen Wechselwirkung von im
Wasser gelösten Schadstoffen und dem umgebenden Gesteinsmaterial, wurden mit
Förderung des Bundesministeriums für Bildung und Forschung (BMBF) und des
Bundesministeriums für Wirtschaft (BMWi) in den vergangenen Jahren zwei
Datenbanken entwickelt. Dies ist zum einen die Sorptions-Datenbank SODA
[Z_BREND1], welche von der Gesellschaft für Anlagen- und Reaktorsicherheit (GRS),
Braunschweig, in Zusammenarbeit mit der Dr. Veerhoff und Scherschel GbR, Bonn,
erstellt wurde. Der Schwerpunkt lag dabei auf dem Rückhalteverhalten von nicht
radioaktiven, überwiegend anorganischen Schadstoffen (z. B. Schwermetalle) im tiefen
Untergrund. Das zu Grunde liegende Modell ist rein empirischer Natur. Bei der zweiten
-37-
Datenbank handelt es sich um die beim Forschungszentrum Dresden-Rossendorf (FZD)
entwickelte Sorptions-Datenbank RES³T (Rossendorf Expert System for Surface and
Sorption Thermodynamics) [Z_BRASS1]. Hier werden im Wesentlichen Daten zu
radioaktiven
berücksichtigt
Schadstoffen
abgelegt.
chemische
Reaktionen
Der
an
zu
Grunde
liegende
Gesteinsoberflächen
Modellansatz
und
wird
als
mechanistisches Modell bezeichnet.
Beide Datenbanken sind im Hinblick auf die Modellkonzepte und die stoffliche Basis
zueinander komplementär und ergänzen sich somit. ISDA basiert auf diesen beiden
bereits abgeschlossenen Vorhaben SODA und RES3T, soll diese integrieren und einem
weiten Nutzerbereich zugängig machen. Partner im Verbundprojekt ISDA sind die GRS
mbH, Fachbereich Endlagersicherheitsforschung, Braunschweig; das Forschungszentrum Dresden-Rossendorf e.V. (FZD), Institut für Radiochemie; die Deutsche
Montan Technologie GmbH, Safe Ground Division, Essen sowie die Dr. Veerhoff und
Scherschel GbR, Bonn.
5.2 Ziele und Nutzen von ISDA
Die beiden bereits existierenden Datenbanken SODA und RES3T sind durch folgende
gemeinsamen Eigenschaften charakterisiert:
• Reine Access-Datenbanken, Einzelarbeitsplatz-orientiert
• Mechanistische und empirische Modelle der Sorption werden separat behandelt
• Starre Tabellen/Felder-Struktur
o Wenig flexibel
o Anpassung nur über Strukturänderung
SODA und RES3T unterscheiden sich stark in ihren Nutzerschnittstellen, sowohl in der
Herangehensweise als auch das Layout betreffend.
-38-
Im Vordergrund des laufenden Vorhabens ISDA steht deshalb die Zusammenführung
und
Weiterentwicklung
der
bestehenden
Sorptions-Datenbanken
zu
einem
webverfügbaren Datenbank-Tool mit vereinheitlichter Nutzerschnittstelle.
In der neuen integrierten Datenbank sollen neben „reinen“ Datensätzen auch eine
Vielzahl von recherchierten Publikationen mit teilweise ausführlichen Bewertungen zur
Datenerhebung, Versuchsdurchführung etc. abgelegt werden. Ziel ist, über eine
komfortable Abfrage der Datenbankinhalte den Nutzer zu einer qualifizierten
Datenrecherche und einer kritischen Datenbeurteilung zu befähigen (KnowledgebaseSystem).
Durch die Verknüpfung der unterschiedlichen Modellkonzepte und Datenbasen soll ein
einheitliches und einfaches Zugreifen auf das akkumulierte Wissen für externe Nutzer
ermöglicht werden. Eine Zusammenführung der bisher existenten Datenbanken SODA
und RES³T ist zudem Voraussetzung für eine kritische Sichtung und Bewertung der
gegenwärtig zugänglichen Sorptionsdaten. Ziel ist es letztlich, Qualitätskriterien für
Sorptionsdaten festlegen zu können, die vorhandenen Daten entsprechend zu
klassifizieren und Datenlücken zu identifizieren, die durch experimentelle Arbeiten
geschlossen werden müssen. Darüber hinaus wird die Datenbasis dahingehend
umgeformt und implementiert, dass sie langfristig und kosteneffektiv gesichert, gepflegt
und aktualisiert werden kann.
Als Nutzerschnittstelle wurde im Verbundprojekt ein Thin Client vorgesehen, basierend
auf HTML-Seiten zur Anzeige in einem Browser. Dies bedeutet, dass viele Funktionen,
die dem Anwender zum Bedienen der Datenbank zur Verfügung gestellt werden, auf
den Server verlagert werden. Auf dem Client werden die Ergebnisse der vom Server
durchgeführten Arbeitschritte in Form von Webseiten angezeigt. Hierfür müssen
sämtliche Funktionen der bisherigen Access-Oberflächen umgesetzt werden in die
Funktionskombination aus Datenbankserver, Skriptinterpreter und dem dynamischen
Zusammenbau der letztlich an den Client übermittelten HTML-Webseiten. Letzteres
geschieht durch Skripte und/oder ein Content Management System, welches aus
-39-
Datenbankinhalten und Formatvorlagen HTML-Seiten generiert. Die Vorteile eines
solchen webbasierten Frontends sind dabei folgendermaßen zusammenzufassen:
-
Der Zugriff auf die Datenbank wird drastisch vereinfacht, da keine lokalen
Installationen der Datenbank bei den Nutzern mehr notwendig sind (inklusive
der nötigen Software MS Access). Es reicht ein standardmäßiger WWWBrowser. Der Nutzerkreis und die Zugangsmöglichkeiten werden aufgrund der
geringen Anschlussvoraussetzungen damit deutlich erhöht.
-
Probleme durch unterschiedliche Softwareversionen (z. B. MS Access 97, MS
Access 2000 oder MS Access XP) entfallen, ebenso Probleme aufgrund
länderspezifischer Installationen.
-
Eine Internetversion gestattet über geeignete Nutzer-Autorisierungstools zudem
den abgestuften Zugriff auf Daten bis hin zu einer Dateneingabe durch
entsprechend qualifizierte Externe in der Perspektive. Damit können mittel- bis
langfristig die Geschwindigkeit der Dateneingabe und der Umfang der
Datenbasis deutlich gesteigert werden. Bei letzterem ist insbesondere der
Bereich der von Institutionen oft nur intern oder in “Grauer Literatur”
publizierten Daten vorhabensrelevant.
-
Das Feedback der Nutzer wird direkter, im Umfang größer, einfacher zu loggen
und zu interpretieren.
-
Durch die zentrale Vorhaltung einer einzigen Datenbankversion wird die
Wartung der Datenbank deutlich vereinfacht. Ebenso wird die angestrebte
Langlebigkeit der Datenbank bezüglich Administration und Datenpflege
unterstützt.
-
Durch Spiegelung der Datenbank auf mehreren Servern wird eine hohe
Ausfallsicherheit realisiert.
Ein nicht unerwähnt bleibender Nebeneffekt ist die zumindest teilweise Abkopplung
von proprietären Programmen durch den Einsatz von Open Source Software. Hier boten
sich bei Projektbeantragung konkret der Apache-Webserver, MySQL oder PostgreSQL
als Datenbank-Server, sowie PHP, Perl oder Python als Skript-Sprachen und Joomla
oder Zope als Content Management System für die Nutzerschnittstelle an.
-40-
5.3 Chemisches Modell und technologische Umsetzung
Der integrative Aspekt für die Zusammenführung zweier unterschiedlicher Konzepte
der Sorption (empirisches und mechanistisches Modell) erforderte bisher und erfordert
im Weiteren Arbeiten sowohl am Inhalt als auch an der Struktur. Insbesondere mussten
diejenigen Tabellen, welche in beiden Vorgängerdatenbanken (SODA & RES³T) bereits
vorhanden waren, also die Schnittmenge darstellten, in ihrer Struktur aneinander
angeglichen werden. Die umfangreichsten Arbeiten betrafen dabei die Tabellen zur
Definition der Minerale, zur Definition der chemischen Elemente, zur Probencharakteristik und zur Erfassung bibliografischer Angaben. Weitere kleinere
Anpassungen betrafen die Definition von Gasen, von experimentellen Methoden zur
Lösungszusammensetzung und den Bearbeitungsstatus.
Ein wichtiger neuer Aspekt im Design der ISDA-Datenbank ist deren hohe Flexibilität
bezüglich erfassbarer Eigenschaften. Diese Flexibilität war eine Forderung der
Projektpartner, aus den Erfahrungen mit SODA heraus. Die Realität bei der
Dokumentation von experimentell bestimmten Verteilungskoeffizienten ist so, dass die
Beschreibung der Proben (Art und Vorbereitung), der experimentellen Details, der
Messergebnisse und deren Interpretation sehr heterogen sind. Hier macht sich die bisher
fehlende Vorgabe einer eindeutigen Nomenklatur, z.B. durch entsprechende
internationale Konventionen und staatliche Vorschriften, u.a. in Form von Normen,
bemerkbar. Die dadurch in den Publikationen zu beobachtende Vielfalt an Begriffen
und Größen lässt sich nur schwer vorab in der Datenbank abbilden. Daher kam der
Wunsch auf, ISDA so flexibel anzulegen, dass der Nutzer selbst neue Eigenschaften
quasi während der Erfassung definieren kann. Die daraus resultierende komplexere
Datenbankprogrammierung und die aus der Vielfalt sich ergebenden Schwierigkeiten
bei nachfolgenden Suchanfragen wurden dabei in Kauf genommen.
Die Struktur der ISDA-Datenbank gliedert sich in drei Teile: Der administrative Teil
umfasst alle Tabellen, in denen die ISDA-Hauptelemente, Eigenschaften, Optionen
sowie deren Zuordnungen untereinander verwaltet werden. Der produktive Teil stellt
die eigentliche Datenbank, bestehend aus den Tabellen für die ISDA-Hauptelemente
-41-
und ihre jeweiligen Definitionen zur Verfügung. Der Literaturteil ist in seiner Struktur
dem Produktivteil identisch, wird aber bedingt durch die komplexe Verknüpfung zu den
Tabellen
des
Produktivteils
getrennt
behandelt.
Unter
ISDA-Hauptelemente
(Objektkategorien) werden verstanden: Origin, Sample, Mineral, Area, Protolysis,
SiteData, Reaction, Complex und Experiment, wobei sich alle auf chemische Stoffdaten
beziehen.
Weitere ISDA-Hauptelemente sind Property, Option, Journal und
Publication. Die Tabelle „isdaelement“ erfasst alle Objektkategorien. Am relativ
anschaulichen Beispiel der Definition von Mineralen soll dieses theoretische Konzept
nachfolgend grafisch dargestellt werden.
Abbildung 3: Flexibilität der Eigenschaften im ISDA-Datenbankmodell am Beispiel eines Minerals
Bei
jeder
Hauptkategorie von
Datensätzen
(Minerale,
Oberflächen,
Proben,
Reaktionsdaten, Bibliographie etc.) ist eine Gliederung in zwei zueinander
korrespondierenden Tabellen umgesetzt: eine Tabelle, welche eine Liste aller der
jeweiligen Kategorie zugeordneten Objekte (hier: Minerale) enthält, und eine zweite
Tabelle, welche alle Eigenschaften für alle diese Objekte verwaltet. Die Namensgebung
-42-
der Tabellen ist dabei wie folgt: „mineral“ erfasst alle Objekte (also alle Minerale) und
„mineral_definition“ verwaltet alle zugehörigen Eigenschaften jedes Minerals (hier u.a.
Formel, Dichte, Mineralogische Gruppe, Kristallsystem, Molare Masse). Für den
Namensbestandteil „mineral“ ist bei anderen ISDA-Hauptelementen z.B. „area“,
„sample“ „reaction“ oder „publication“ zu substituieren. Alle überhaupt möglichen
Objekteigenschaften werden in der Tabelle „Property“ verwaltet. Eine Zuordnung,
welche dieser Eigenschaften für eine Objektkategorie (z.B. die Minerale) zulässig sind,
erfolgt
in
einer
zusätzlichen
Tabelle
„isdaelement_property“.
Das
gesamte
Datenbankmodell kann auf der beiliegenden CD betrachtet werden.
5.4 ISDA auf dem Datenbanksystem „PostgreSQL“
5.4.1
Implementierung in Soft- und Hardware, Installation, Hinweise
Das integrierte Sorptions-Datenbanksystem ISDA, welches im vorhergehenden
Abschnitt bereits ausführlich beschrieben wurde, liegt derzeit teilweise bereits in Form
einer PostgreSQL-Datenbank (Version 8.2.3) vor. Die entsprechende Entscheidung war
bereits zu Beginn des Verbundprojektes getroffen worden. Ein Großteil der
Sorptionsdaten wurde bereits aus den beiden alten Datenbanken in die neue Datenbank
überführt.
Für erste Abfragen und Reports von Datensätzen steht momentan eine unter ColdFusion
MX Version 6.1 entwickelte Weblösung (ISDA-Quick) zur Verfügung. Diese soll im
Laufe der Zeit zu einer zentralen Anlaufstation sowohl für die Dateneingabe als auch
für die Datenabfrage ausgebaut werden. ISDA-Quick wiederum soll in eine Webseite
eingebunden werden, welche weitere Funktionalitäten zur Verfügung stellt, nicht zuletzt
die allgemeinen Informationen über ISDA (Ziele und Partner des Projektes, avisierte
Nutzer, Nutzungsbedingungen, usw.). Diese Webseite ist somit im Sinne eines zentralen
ISDA-Portals aufzufassen.
-43-
Bei der Weiterentwicklung dieses Portals wird die Administration der Daten und Nutzer
sowie die Absicherung durch ungewollte Fremdzugriffe ein wichtiger Bestandteil sein.
Dazu sollen das in der Diplomarbeit enthaltene Konzept und der Prototyp zur
Administration einer webbasierten chemischen Stoffdatenbank als Grundlage dienen.
Momentan wird sowohl für den Betrieb der Webseite als auch für die Kommunikation
zwischen Webserver und Datenbank ein „ColdFusion“ - Applikationsserver als
Ergänzung in der Middleware (Geschäftslogiksicht) eingesetzt. Im Folgenden wird die
Architektur noch einmal bildlich erläutert.
Abbildung 4: Gesamtstruktur des ISDA-Datenbanksystems bei Beginn der Diplomarbeit
1.
Der Webbrowser des Clients fordert die Seite vom Webserver an. Dabei können Parameter
übergeben werden.
2.
Eventuell benötigt die angeforderte Seite Datenbankinhalte oder überträgt neue Inhalte an
die Datenbank. Die Anfrage wird an den Applikationsserver geschickt, der eine Software
beziehungsweise einen Dienst zur Weiterverarbeitung und zum Datenbankzugriff zur
Verfügung stellt.
3.
Die Abfrageergebnisse oder Statusmeldungen werden von der Datenbank über den
Applikations- und Webserver an den Client zurückgegeben.
4.
Der Webbrowser stellt die Seite dar.
-44-
5.4.2
Funktionsbeschreibung wichtiger ISDA-Tabellen
Die in Abschnitt 5.3 erläuterte Struktur der ISDA-Datenbank führte zur in der
nachfolgenden Tabelle erfassten Menge an Tabellen.
Tabelle 2: Funktion wichtiger ISDA-Tabellen
Tabelle
PROPERTY
ISDAELEMENT
ISDAELEMENT_PROPERTY
OPTION
PROPERTY_OPTION
PROPERTY_DEFINITION
PROPERTY_PROPERTY
OPTION_DEFINITION
OPTION_PROPERTY
Hauptelement (s.o.)
Hauptelement_DEFINTION
SAMPLE_MINERAL
GENERIC
GENERIC_COMPOSITION
REACTION_PARTNERS
JOURNAL/J.-DEFINITION
PUBLICATION/P._DEFINITION
1)
Funktion
Speicherung der Gesamtheit aller möglichen Eigenschaften.
Benennung der ISDA-Elemente.
Festlegung, welche Eigenschaft mit welchem ISDA-Element
verwendet werden kann. Hier wird festgelegt, ob eine
Eigenschaft pro Eintrag in einer der Hauptelemente (Tabellen)
mehrfach verwendet werden kann.
Speicherung der Gesamtheit aller möglichen Optionswerte
(Nachschlagewerte).
Festlegung, welche Option für welche Eigenschaft zur
Verfügung steht.
Ermöglicht, Eigenschaften selbst näher zu definieren. 1)
Festlegung, welche Eigenschaft zur Definition welcher
Eigenschaft verfügbar ist.
Ermöglicht, Optionswerte näher zu definieren. 2)
Festlegung, welche Eigenschaft zur Definition welcher Option
verfügbar ist.
Speichert ID und Literatur-Referenz für Objekte. Die
Doppelreferenz erlaubt den Verweis auf Primär- und
Sekundärzitat.
Zu jedem in einer der Haupttabellen angelegten Objekte werden
Eigenschaften zugeordnet. Jede Eigenschaft wird mit einem
alphanumerischen oder numerischen Wert belegt oder mit einem
Optionswert versehen.
Speicherung der Mineralzusammensetzung einer Probe.
Hilfstabelle; ermöglicht die Aufnahme von generischen Proben.
Vereinfachung für das Einpflegen wiederkehrender, ähnlicher
Proben.
Mineral-Zusammensetzung der Generika.
Verknüpfung zwischen einer Reaktion und den teilhabenden
Liganden. Liganden werden als Optionswerte geführt und in
einer Pseudotabelle (View) bereitgestellt.
Tabellen zur Verwaltung der in PUBLICATION referenzierten
Zeitschriften.
Tabellen zur Verwaltung der Zitate.
Beispiel: Die Eigenschaft „bulk-density“ hat selbst die Eigenschaft „gehört zu“ mit dem Optionswert
„physikalische Eigenschaften“
2)
Beispiel: Die Option „Wasserstoff“ (Eigenschaft „Element“) hat die Eigenschaft „Symbol“ mit dem
alphanumerischen Wert „H“, die Eigenschaft „AtomicMass“ mit dem numerischen Wert „1,00794“ und die
Eigenschaft AtomicNumber mit dem numerischen Wert „1“. Derart komplexe Zusammenhänge werden in Form von
Views als Pseudotabellen leichter zugänglich gemacht
-45-
5.5 Ist-Analyse von ISDA
Um die Anforderungen an das Projekt zu analysieren ist zunächst eine Ist-Analyse des
bestehenden ISDA Systems abzuhandeln. Diese bezieht sich auf den Projektstand von
ISDA zum Beginn der Diplomarbeit, d.h. nach bereits 2 ½ Jahren Projektlaufzeit.
Ist-Analyse Nutzer- und Rechteverwaltung
Für
die
Nutzer-
und
Rechteverwaltung
wird
bisher
das
im
Datenbank-
managementsystem „PostgreSQL“ vorhandene Gruppenkonzept genutzt. PostgreSQL
unterscheidet dabei zwischen Gruppenrollen und Login-Rollen. Eine Login-Rolle
berechtigt angelegte Nutzer, sich an der Datenbank einzuloggen. Login-Rollen können
Gruppenrollen zugeordnet sein, die wiederum alle Zugriffsrechte beinhalten.
Die eigentliche Administration sowie das Anlegen von Nutzern und deren Rechte zum
Zugriff auf die Datenbank werden zurzeit zentral durch einen Datenbankadministrator
bewerkstelligt. Hierbei wird jedoch nicht unterschieden, ob der Nutzer nur lesend oder
auch schreibend Zugriff auf die Daten hat. Nachdem der Datenbankadministrator einen
Nutzer angelegt hat, kann dieser sich zunächst auf der provisorischen Projekt-Webseite
„ISDA-Quick“ anmelden, Datensätze suchen und auch ändern. Es existieren also keine
unterschiedlichen Rollen mit vorher festgelegten gezielten Berechtigungen.
Ist-Analyse Zugriffsschutz
Der Zugriff auf die ISDA-Datenbank direkt sowie über die ISDA-Quick Seite ist durch
ein Passwort gesichert. Die Übertragung von Daten erfolgt unverschlüsselt, und es sind
keine weiteren Sicherheitsvorkehrungen für Angriffe von außen (z.B. Script Site
Crossing) zu erkennen. Fehlerhafte Eingaben in Eingabefelder werden größtenteils
abgefangen, so dass die Gefahr einer SQL-Injection als gering anzusehen ist. Ernsthafte
Tests fanden dazu allerdings noch nicht statt.
Ist-Analyse Datenintegrität
Im Sinne des Transaktionsmanagement wird lediglich die semantische Integrität
abgesichert. Die Richtigkeit, Korrektheit und logische Widerspruchsfreiheit wird bei der
-46-
ISDA-Datenbank durch einige Methoden bereits sichergestellt. Es existieren
Eingabeprüfungen, zahlreiche Trigger, Funktionen und Check-Klauseln. Weiterhin wird
die referenzielle Integrität durch Fremdschlüssel sichergestellt. Die Synchronisation
parallel laufender Prozesse (Ablaufintegrität) wurde nicht realisiert. Rollback und
Undo-Methoden sind nicht zusätzlich eingerichtet. Die Absicherung der physischen
Integrität ist noch nicht ausreichend gewährleistet. Gegen den totalen Verlust der Daten
geschieht ein tägliches Backup durch den zentralen DB-Administrator. Bei Absturz oder
Datenverlust werden diese wieder eingespielt. Andere Methoden zur Sicherung der
Daten sind nicht erkennbar.
Ist-Analyse Protokollierung
Das aktuelle System sieht momentan kein separates Log zur Protokollierung anderer
Ereignisse in einer extra Tabelle oder Datei vor. Vielmehr wird derzeit in relevanten
Tabellen ein Attribut „last_editor“ mitgeführt, der für einen veränderten Datensatz den
letzten
Editor
in
der
Datenbank
festhält.
Ein
allgemeines
Protokoll
des
Datenbankmanagementsystems listet alle Anmeldungen an das System von Nutzern auf.
Ist-Analyse Fehlerbehandlung
Eingaben des Nutzers auf dem Frontend (ISDA-Quick) sind teilweise schon durch
Wertvorgaben oder Auswahllisten abgefangen. Die Eingabe von Werten in freie
Eingabefelder werden geprüft und Sonderzeichen nicht beachtet. Es erscheinen
allerdings auch keine Fehlermeldungen oder Hinweise. Datenbankseitig verhindern
Fremdschlüssel Eingaben mit Beziehung auf andere Tabellen (referenzielle Integrität).
Bei einem Ausfall des Datenbankservers erscheint auf dem Browser eine von
„ColdFusion“ generierte Fehlermeldung. Diese ist für normale Anwender nicht zu
verstehen. Weitere Informationen über Maßnahmen zur Fehlerbehandlung im
Programm selbst lagen zum Zeitpunkt der Analyse nicht vor.
-47-
6. Anforderungsanalyse und Konzeption
6.1 Ziel und Nutzen des Administrationssystems
Wesentliches Ziel der Diplomarbeit ist die Erstellung eines Prototyps zur visuellen
Darstellung und Veranschaulichung der theoretisch erarbeiteten Grundlagen. Der
Prototyp soll aus einer webbasierten Lösung zur Administration der bereits für das
ISDA-Projekt bestehenden chemischen Stoffdatenbank in PostgreSQL bestehen. Für die
Nutzerverwaltung und für den Schutz vor unerlaubten Zugriffen ist hierzu ein
zusätzliches Rollenkonzept zu entwickeln, in dem Nutzer und Rechte verwaltet werden
können.
Dem Benutzer stehen nach erfolgreicher Anmeldung auf der Webseite verschiedene
Funktionen zur Verfügung, in Abhängigkeit von seinen zugewiesenen Nutzerrechten.
Ein normaler Nutzer kann beispielsweise über einen Filter bestimmte Datensätze suchen
und einsehen, während ein Editor darüber hinaus die Möglichkeit hat, Datensätze zu
ändern. Administratoren sollen zusätzlich noch in der Lage sein, über diese Seite Nutzer
und Rechte anzulegen beziehungsweise zu verwalten.
Da es sich bei diesem Projekt um sensible chemische Daten handelt, ist bei der
Umsetzung und Entwicklung der Webseite ein besonders großer Wert auf
Datensicherheit und Integrität zu legen.
Auf Basis dieses Prototyps wird durch das Forschungszentrum Dresden-Rossendorf im
weiteren Verlauf ein Tool zur Administration entwickelt und mit allen weiteren
Funktionalitäten von ISDA zum Einsatz kommen. Hierbei entsteht auch ein großer
Nutzen für das Institut im Hinblick auf die Erweiterung und Weiterentwicklung des
ISDA – Systems.
-48-
6.2 Funktionale Anforderungen
Im Folgenden werden die funktionalen Anforderungen an das Projekt erläutert. Das
heißt, alle Funktionen, die der Nutzer ausführen und das Programm später beinhalten
soll, werden vorher festgelegt.
Dem Nutzer sollen im Programm später folgende allgemeine Funktionen auf der
Webseite zur Verfügung stehen:
-
Neue Nutzer können sich über ein Formular registrieren und bekommen zur
Bestätigung eine E-Mail mit Aktivierung zugesandt.
-
Registrierte und freigeschaltete Nutzer können sich am System über ein
Anmeldeformular einloggen.
-
Nutzer werden in Rollen mit verschiedenen Rechten eingestuft und bekommen
nach dem Anmelden am System eine Hauptseite mit angepassten Optionen
angezeigt. Der Optionsumfang reicht von Datensätze anzeigen, suchen und
editieren bis zu administrativen Aufgaben wie Nutzer- und Rechte verwalten,
Protokolldateien auswerten und Backups der Datenbank anlegen.
-
Nutzer, die Ihr Passwort vergessen haben können dieses mit ihrer E-MailAdresse neu setzen.
Die funktionalen Anforderungen an dieses Projekt unterscheiden sich im Weiteren noch
einmal zwischen allgemeinen Systemfunktionen sowie der Beschreibung von
Datenstruktur und Attributen der Entity-Typen.
6.2.1
Allgemeine Systemfunktionen
Die Anforderungen der allgemeinen Systemfunktionen gliedern sich im Weiteren
genauer in
Verarbeitungsfunktionen
- Verarbeitung der Informationen im System,
Prüffunktionen
- Überprüfung der Eingaben des Nutzers und
Dialogfunktionen
- Benutzerschnittstellen des Systems.
-49-
In den nachfolgenden Tabellen werden nur die wichtigsten Funktionen aufgeführt und
beschrieben. Dialogfunktionen sind nicht genauer erläutert.
Tabelle 3: Funktionale Anforderungen: Verarbeitungsfunktionen
Funktion
Registrieren
Einloggen/
Anmelden
Passwort
erneuern
Verarbeitungsfunktionen
Beschreibung
Voraussetzung: keine.
Der Nutzer wird zu einem Registrierformular weitergeleitet. Nach Eingabe von
Name, Vorname, E-Mail-Adresse und Passwort wird der Nutzer in der Datenbank
registriert und bekommt eine Bestätigungs-E-Mail mit Aktivierungslink zur
Freischaltung seines neuen Benutzerkontos. Dieser Aktivierungslink hat eine zeitlich
begrenzte Gültigkeit. Dabei erhält jede Person, die sich auf diesem Wege registriert
und freischaltet, zunächst ausschließlich einfache Leserechte.
Voraussetzung: Nutzer muss im System registriert und freigeschalten sein.
Nach Eingabe von E-Mail-Adresse und Passwort werden durch eine Prüffunktion
die Daten in der Datenbank geprüft. Im Erfolgsfall ist die Person eingeloggt und es
erfolgt eine Weiterleitung zur dynamisch generierten Hauptseite.
Voraussetzung: Nutzer ist im System registriert und freigeschalten
Der Link „Passwort vergessen“ fordert in einem Eingabefeld die E-Mail-Adresse des
Nutzers ab. Existiert diese E-Mail-Adresse und ist freigeschalten, wird eine Mail an
den Nutzer mit einem Aktualisierungslink gesendet. Klickt der Nutzer auf den Link
kann er für sein Konto das Passwort neu setzen.
Tabelle 4: Funktionale Anforderungen: Prüffunktionen
Funktion
Passwort_Check
Eingabe_Check
Timeout_Check
Prüffunktionen
Beschreibung
Prüft bei der Anmeldung E-Mail-Adresse und Passwort, ob der Nutzer existiert
und das Passwort korrekt ist.
Im Erfolgsfall: Weiterleitung zur dynamisch generierten Such- und
Administrations-Seite (abhängig von der Rolle des Nutzers).
Bei Misserfolg: Fehlermeldung in Log-Datei und im Browser.
Prüft jegliche Eingaben in Eingabefelder auf Gültigkeit und Plausibilität.
Sonderzeichen wie z.B. ’, “, %, $, < oder > werden ggf. entwertet.
Maximale Länge der Eingabefelder ist abhängig von den Attributwerten der
jeweiligen Tabellen (siehe Datenbankmodell und Attributwerte)
Prüft auf Aktivität der Webseite. Nach Ablauf einer vorher festgelegten Zeit
ohne Aktivität erfolgt eine automatische Abmeldung vom System (in Form
eines „Session-Timeout“) zum Schutz vor ungewollter Fremdbenutzung.
-50-
6.2.2
Tabellen, Attribute und Datenstruktur
Es werden nur jeweils die zur Administration benötigten Tabellen (Entity-Typen) und
Attribute
zunächst
in
einem
Entity-Relationship-Diagramm
und
nachfolgend
detaillierter in Tabellenform dargestellt. Die Kurzdarstellung aller Tabellen der
chemischen Stoffdatenbank für ISDA erfolgte im Abschnitt 5.4.2, eine ausführlichere
Variante ist auf der zu dieser Diplomarbeit beiliegenden CD zu finden.
Abbildung 5: Entity-Relationship-Diagramm
Tabelle „isda_users“
In dieser Tabelle werden alle Nutzer, die sich auf der ISDA-Webseite registrieren,
eingetragen. Dabei bekommt jeder Nutzer eine einzigartige Benutzer ID und wird zu
einer Rolle aus der Tabelle „isda_user_roles“ zugewiesen.
-51-
Tabelle 5: Tabelle "isda_users"
Attributname
user_id
user_firstname
user_lastname
user_E-Mail
Datentyp/Länge
Integer
Varchar(20)
Varchar(50)
Varchar(50)
Schlüssel
Primary-Key
NULL
Not null
null
Not null
Not null
user_password
Varchar(20)
user_role_id
Integer
user_active
Boolean
Not null
user_reg_date
Date
Not null
Not null
Foreign-Key
Not null
Bemerkung
Auto increment
Wird für die Anmeldung
benötigt.
Wird für die Anmeldung
benötigt. MD5verschlüsselt.
Zuweisung einer
Nutzerrolle aus der
Tabelle „isda_user_roles“
Zeigt an, ob User aktiv
gesetzt ist und einloggen
kann.
Datum der Registrierung.
Tabelle „isda_user_roles“
Hier werden alle Nutzerrollen angelegt. Vorerst „Administrator“, „Editor“ und
„Nutzer“.
Tabelle 6: Tabelle "isda_user_roles"
Attributname
role_id
role_name
Datentyp/Länge
Integer
Varchar(20)
Schlüssel
Primary-Key
NULL
Not null
Not null
Bemerkung
Auto increment
Tabelle „isda_user_activate“
Der Aktivierungslink, der mit einer E-Mail an den Nutzer gesendet wird, besteht zur
eindeutigen Identifikation und Sicherheit aus der „user_id“ und einem zufällig
generierten Code. Diese Tabelle dient dazu, Datensätze für alle diese versendeten EMails, d.h. für alle registrierten nicht freigeschalteten Nutzer, temporär abzuspeichern.
Tabelle 7: Tabelle "isda_user_activate"
Attributname
user_id
Datentyp/Länge
Integer
Schlüssel
Foreign-Key
NULL
Not null
activation_code
Integer
Not null
reg_date
Date
Not null
Bemerkung
Referenziert auf user_id
in Tabelle “isda_users“.
Zufällig generierter Code,
der dem Nutzer im
Aktivierungslink per Mail
gesendet wurde.
Datum der Registrierung.
-52-
6.3 Nicht-Funktionale Anforderungen
In den nicht-funktionalen Anforderungen werden alle Eigenschaften festgelegt, die das
Programm später erfüllen soll. Hardware-Anforderungen sind für das vorliegende
Projekt generell als nichtkritisch anzusehen und bereits durch die Projektpartner im
ISDA Projekt vorgegeben. Daher wird im Rahmen dieser Diplomarbeit darauf nicht
näher eingegangen.
6.3.1
Allgemeine Anforderungen (Rahmenbedingung)
Architektur
Die Webseite für die Administration der chemischen Stoffdatenbank ist modular und
erweiterbar aufzubauen und wie eine „Hülle“ auf das vorhandene System zu sehen.
Dabei erfolgt eine Unterscheidung zwischen der Administration für die ISDA-Webseite
und der Administration der Datenbank selbst. Im Rahmen dieser Arbeit wird nur die
Entwicklung und Architektur der Administrations-Webseite betrachtet. Eine genauere
Übersicht und kurze Beschreibung der Architektur kann in Kapitel 6.5 (Architektur der
ISDA-Umsetzung) gefunden werden.
Umsetzung
Die Umsetzung und Realisierung der Anforderungen erfolgt auf der Frontend- sowie
auf der Datenbankebene.
Es ist ein System für Nutzer- und Rechteverwaltung als Zwischenschicht vor
Applikationsserver und Datenbank zu entwickeln, in der bereits eine Zugriffskontrolle
auf die Webseite und Datenbank stattfindet. Die Verarbeitung der Daten sollte dann auf
der Datenbankseite mit Hilfe von Datenbank-Funktionen und Triggern erfolgen.
Als Skriptsprache für die Umsetzung der Administrations-Webseite wurde PHP von
den ISDA-Projektpartnern vorgegeben. Die Datenbank liegt, wie bereits in Kapitel 5.4
-53-
erwähnt, auf einem PostgreSQL-System vor und kann für die erweiterte Rollen- und
Nutzerverwaltung genutzt werden.
Eine genaue Lösungsstrategie und Realisierung soll über die Betrachtung verschiedener
Herangehensweisen in Kapitel 7 erörtert und umgesetzt werden.
Protokollierung
In Hinblick auf die Optimierung der Seite, der Unterstützung von Nutzern und nicht
zuletzt der Kontrolle über Zugriffe im Rahmen der Sicherheitsaspekte soll zusätzlich
eine Log-Datei zur Protokollierung wichtiger Aktionen angelegt und mitgeführt werden.
Dieses Protokoll wird als Datei beim Webserver gespeichert und soll unter anderem
folgende Daten festhalten:
-
Anmelden
und
Abmelden
von
Nutzern
(E-Mail-Adresse,
Anmelde-/
Abmeldezeit)
-
Zählen von Nutzeranmeldungen
-
Fehleingaben des Nutzers
-
Alle Änderungen an der Datenbank (Tabellen, Datensätze, Nutzer)
-
Jegliche Systemfehler (z.B. Verbindungsabbrüche zur Datenbank)
Teilweise können Informationen über Änderungen von Datensätzen auch mittels
Spalten in den jeweiligen Tabellen realisiert werden (z.B. über Flags).
6.3.2
Qualitätsanforderung
Funktionserfüllung
Dem Nutzer steht eine webbasierte Oberfläche mit Anschluss an die chemische
Stoffdatenbank zur Verfügung. Abhängig von seinen Rechten kann der Nutzer
Datensätze suchen, verändern und löschen. Nutzer in der Rolle eines Administrators
können darüber hinaus u.a. Nutzer und Rechte verwalten oder Log-Dateien der
Protokollierung einsehen und auswerten.
-54-
Benutzerfreundlichkeit
Die Weboberfläche ist so zu konzipieren, dass sie jeder Nutzer problemlos bedienen
kann. Fehlermeldungen sollen leicht verständlich und allgemein gehalten werden. Für
Fragen zur Benutzung der Seite soll eine Hilfe zur Verfügung stehen.
Sicherheitsanforderungen
Die Seite, und die damit angebundene Datenbank, sollen sicher vor Angriffen von
außen und möglichen Fremdzugriffen sein. Dabei sind die in Kapitel 3.1 erwähnten
Schutzziele zur Sicherstellung der Vertraulichkeit, Verfügbarkeit und besonders die
Integrität entsprechend einzuhalten. Die Problematik der Integrität ist für die
Verwaltung der chemischen Stoffdatenbank besonders wichtig. Das deshalb, weil die
Stoffdaten in der Anwendung für die Auslegung von Deponien, nuklearen Endlagern
oder Sanierungsstrategien unmittelbare Auswirkungen auf Menschen haben können. Sie
sind daher unbedingt vor Manipulationen so gut es geht zu schützen.
Daten und insbesondere deren strukturellen Zusammenhänge sollen im Rahmen des
Schutzes geistigen Eigentums auch nicht ohne weiteres für Dritte zugänglich sein.
Gegebenenfalls sind Daten für die Übertragung im Netz mit SSL zu verschlüsseln.
Zuverlässigkeit
Das System fängt Eingabefehler des Benutzers ab und prüft bei Änderungen an
Datensätzen Syntax und Plausibilität.
Erweiterbarkeit
In Hinblick auf die spätere Weiterverarbeitung und Erweiterung des Prototyps sollen die
Entwicklung und der Aufbau der Webseite möglichst modular und erweiterbar erfolgen.
Auch die Möglichkeit zur Erweiterung und Zuweisung von Rechten auf Gruppen sollte
gegeben sein.
Datensicherung
Datenbackups sowie das Wiederherstellen von Daten erfolgen nicht über die
Administration der Webseite. Diese Funktion geschieht direkt auf der Datenbank-
-55-
Ebene, wenn möglich mittels Logging und Recovery, und wird durch den dafür
zuständigen Datenbankadministrator überwacht.
6.4 Fehlerbehandlung
Eingabefehler
Syntaktische Eingabefehler sollen so weit es möglich ist schon von vornherein
ausgeschlossen werden. Das heißt, es sind jeweils nur die für das Eingabefeld
zugelassenen Zeichen über die Tastatur einzugeben (Whitelisting).
Logische Eingabefehler, wie zum Beispiel ein fehlendes @-Zeichen bei einer E-MailAdresse, sind weitestgehend abzufangen und mit einer leicht verständlichen
Fehlermeldung dem Nutzer über den Browser mitzuteilen.
Eingabefehler sind zu statistischen Zwecken und im Sinne der Optimierung der
Webseite im System mit einem Eintrag in die Log-Datei zu protokollieren.
Systemfehler
Tritt während der Benutzung der Seite ein Fehler im System auf, sei es durch Absturz
der Server oder durch Verbindungsabbruch zur Datenbank, bekommt der Nutzer eine
für ihn verständliche Fehlermeldung am Browser angezeigt. Weiterhin wird ein
Protokolleintrag in die Protokoll-Datei geschrieben.
Bei Fehlern mit gewissen Prioritätsgrad ist der Administrator automatisch per E-Mail zu
informieren. Gegebenenfalls können gleich Maßnahmen zur Behebung des Fehlers mit
gesendet werden.
-56-
6.5 Architektur der ISDA-Umsetzung
Abbildung 4 in Kapitel 5.3 zeigte bereits grafisch die Architektur und Arbeitsweise des
vorhandenen ISDA-Systems. Aus dieser vorhandenen Architektur heraus und den neuen
Anforderungen der Web-Administration ergibt sich demnach folgende neue
Architektur.
Abbildung 6: neue Architektur des ISDA-Systems
1.
Der Webbrowser des Clients fordert die Seite vom Webserver an. Dabei
können Parameter übergeben werden.
2.
Der Webserver holt die angeforderte Datei von der Festplatte und reicht sie
mit Parametern an den PHP-Interpreter weiter.
3.
Der PHP Interpreter liest den Programmcode durch Parsing und führt die
Befehle aus.
4.
Eventuell benötigt die angeforderte Seite Datenbankinhalte oder überträgt
neue Inhalte an die Datenbank. Die Anfrage wird an den Applikationsserver
-57-
geschickt,
der
eine
Software
beziehungsweise
einen
Dienst
zur
Weiterverarbeitung und Datenbankzugriff zur Verfügung stellt.
5.
Die Abfrageergebnisse oder Statusmeldungen werden von der Datenbank
über den Applikationsserver an den PHP Interpreter zurückgegeben.
6.
Der PHP Interpreter erstellt eine neue, temporäre Datei im HTML-Format, in
der eventuelle Datenbankergebnisse als Text enthalten sind, und gibt sie über
den Webserver an den Client zurück.
7.
Der Webbrowser interpretiert die Datei und stellt die Seite dar.
Der ColdFusion Applikationsserver fungiert nunmehr als reiner Anwendungsserver. Die
Aufgabe des Webservers wird an einen zusätzlich eingefügten Apache-Server mit PHPPlugin übergeben. Der Grund liegt in der Anforderung von PHP als zu nutzende
Skriptsprache für die Web-Administration der Datenbank. Auf ColdFusion kann jedoch
nicht gänzlich verzichtet werden, da bereits viele optimierte Funktionen für die Abfrage
von Daten auf der Datenbank realisiert wurden und gleich genutzt werden können.
Für diese Architektur ergeben sich nun folgende Anforderungen:
WWW-Server und Betriebssystem
Als Server für die Bereitstellung der Web-Services und der Datenbank wird ein Apache
Webserver Version > 2 verwendet, welcher mindestens PHP 4 und XHTML 1.0 sowie
das erforderte Datenbankbetriebssystem unterstützt (Diese Konfiguration ist historisch
bedingt und Vorgabe des Forschungszentrum Dresden-Rossendorf).
Middelware
Middelware bezeichnet hier eine weitere Einrichtung einer Applikation zwischen
Datenbankserver und Webserver. Vorraussetzung ist Cold Fusion Version MX6.1 oder
höher als Applikationsserver. Die Nutzung von ColdFusion wurde durch den
Projektpartner Dr. Veerhoff & Scherschel GbR angeregt, da ein ColdFusionAnwendungsserver durch verständliche Syntax und einfachen Code eine schnellere
Anwendungsentwicklung ermöglicht. Eine kurze Erläuterung von ColdFusion als
webbasierte serverseitige Technik wurde bereits in Kapitel 2.4 beschrieben.
-58-
Datenbank
Als Datenbankbetriebssystem wird eine PostgreSQL-Datenbank in der Version 8.2.
oder höher vorausgesetzt. Die entsprechende Maßgabe erfolgte bereits in einem frühen
Stadium des Verbundprojektes ISDA. Für diese Entscheidung sprachen folgende
Vorteile von PostgreSQL:
-
Open Source Software
-
Anwachsende Community, d.h. relativ weite Verbreitung
-
Unterstützung von Funktionen, Trigger und Check-Bedingungen
-
Weitgehende Einhaltung des SQL-Standards 92, 99 und 2003
-
Relativ gute Administration und Administrations-Tools
Clients
Da es sich um eine webbasierte Lösung handelt, wird als Software nur ein
plattformunabhängiges 32-Bit-Betriebssystem mit webfähigem Browser vorausgesetzt.
Der Browser sollte eine grafische Oberfläche haben und mindestens XHTML 1.0 sowie
CSS 1 unterstützen. Zusätzlich sollte der Browser für die Sessions Cookies akzeptieren.
Gängige Browser wären beispielsweise „Microsoft Internet Explorer“, „Mozilla
Firefox“ und „Opera“.
6.6 Konzeption - Use cases
Im Folgenden werden Anwendungsfälle definiert, welche die Interaktion zwischen
einem Nutzer und dem System darstellen sollen. Dabei wird immer nur ein möglicher
Prozess oder Ablauf im System näher beschrieben und bildlich dazu erklärt. Der
Funktionsumfang der dynamisch generierten Hauptseite ist hier nur beispielhaft
dargestellt und kann beliebig erweitert bzw. angepasst werden.
-59-
Tabelle 8: Use case 1: Nutzerregistrierung
Nutzerregistrierung
1.
Ein Nutzer navigiert mit einem Webbrowser auf die ISDA-Seite. Auf der Startseite wird er nach
Anklicken des Login-Buttons zur Eingabe von E-Mail-Adresse und Passwort gebeten, um auf die
eigentliche Hauptseite mit allen Funktionen zu gelangen.
2.
Dieser Nutzer hat noch keine Zugangsdaten und möchte sich registrieren. Dazu klickt er auf den
Link zur Registrierung und wird auf eine weitere Seite geleitet, in der spezifische Nutzerdaten
abgefragt werden.
3.
Nach Eingabe und Bestätigung der allgemeinen Bedingungen (Lizenzbedingungen) bekommt der
neue Nutzer eine E-Mail mit Aktivierungslink zur Freischaltung seines neuen Benutzerkontos
zugeschickt.
4.
Nun kann der registrierte Nutzer seine Zugangsdaten auf der Seite eingeben und gelangt so zu der
eigentlichen ISDA-Homepage, auf der er zunächst eingeschränkt lesenden Zugriff auf chemische
Stoffdaten besitzt. Durch den dynamischen Hauptseiten-Aufbau werden alle nutzbaren Funktionen
und Hyperlinks an die
Rechte des Nutzers angepasst. Funktionen anderer „höherer“
Nutzergruppen (mit mehr Rechten und Funktionen) sind nicht sichtbar.
Abbildung 7: Ablaufdiagramm eines allgemeinen Anmeldeprozesses (use case 1)
-60-
Tabelle 9: Use case 2: Funktionen eines Editors
Editoren
1.
Ein Nutzer in der Rolle eines „Editors“ hat nach erfolgreicher Anmeldung alle Rechte eines
normalen lesenden Nutzers und zusätzlich eingeschränkte Lese- und Schreibrechte auf bestimmte
Bereiche der ISDA – Homepage.
2.
Editoren haben, je nach Konfiguration und Rechtevergabe, die Möglichkeit, Datensätze zu ändern.
Hierbei wird jede Änderung mitprotokolliert und kann ggf. rückgängig gemacht werden.
Abbildung 8: Ablaufdiagramm mit den Optionen eine "Editors" nach dem Anmeldeprozess (use
case 2)
-61-
Tabelle 10: Use case 3: Funktionen eines Administrators
Administration
1.
Meldet sich ein Administrator im System an, das heißt ein Nutzer mit Administrationsrechten, hat
dieser grundsätzlich alle Rechte, die ein Nutzer und Editor besitzt und darüber hinaus noch die
Möglichkeit, die Nutzer und ihre Rechte selbst zu administrieren, Datensätze zu ändern oder LogDateien zu sehen. Die Optionen, Funktionen und Links können beliebig erweitert und an die Rolle
angepasst werden.
2.
Alle Datensätze sind für diese Admin-Rolle auch lösch- beziehungsweise veränderbar.
Abbildung
9:
Ablaufdiagramm
mit
den
Optionen
eines
"Administrators"
nach
dem
Anmeldeprozess (use case 3)
-62-
7. Realisierung eines Prototyps zur Administration einer
chemischer Stoffdatenbank
Auf Grundlage der in dieser Diplomarbeit erarbeiteten Punkte der Administration, der
Datensicherheit und der Anforderungsanalyse wurde ein Prototyp entwickelt. Im
Folgenden wird die Realisierung des Prototyps dargestellt.
7.1 Einrichtung und Installation von Web- und Datenbankserver
Webserver
Die Entwicklung des Prototyps ist in der Skriptsprache PHP (Version 4) realisiert,
welche ein PHP-Modul zum Ausführen der PHP-Seiten voraussetzt. Hierfür wurde das
Programm XAMPP 2.4, eine Zusammenstellung freier Software durch „Apache
Friends“, für den lokalen Einsatz auf dem Entwicklungsrechner installiert. XAMPP
zeichnet sich durch eine sehr einfache Installation und Bedienbarkeit aus und hat des
Weiteren den Vorteil, dass neben der Webserver-Funktionalität gleich ein Mailserver
(Mercury/32) inbegriffen ist. Somit kann gleich das Versenden von Mails lokal für eine
Nutzeranmeldung auf der Seite oder bei vergessenem Passwort getestet werden.
Datenbankserver
Durch das ISDA-Projekt (siehe Kapitel 5) existiert bereits ein Datenbanksystem in
PostgreSQL, welches bereits teilweise mit chemischen Stoffdaten gefüllt ist. Zum
Zwecke der Entwicklung wurde PostgreSQL lokal auf dem Entwicklungsrechner
installiert und ein Dump, d.h. eine Kopie oder ein Speicherauszug der existierenden
Stoffdaten, eingespielt. Ebenso wurde der Applikationsserver ColdFusion MX6.1 von
Adobe (ehemals Macromedia) lokal installiert, um das Zusammenspiel mit der bei den
Projektpartnern bestehenden Umgebung testen zu können.
-63-
7.2 Aufbau und Realisierung des Prototyps
7.2.1
Architektur und Aufbau
Im Fordergrund steht die Erweiterbarkeit des Programms. Daher soll der Aufbau der
Seiten so modular wie möglich gestaltet sein. Abbildung 10 zeigt den Aufbau des
Prototyps und die Interaktion zwischen den Seiten, Klassen und der Datenbank.
Abbildung 10: Darstellung des Aufbaus der Seiten und Objekte des Prototyps
Die Seitenstruktur
Im Mittelpunkt für jede Seite steht die Datei „Site_structure.php“. Diese enthält
Funktionen über das Grundgerüst einer jeden anzuzeigenden Seite. Die eingebundene
Stylesheet-Datei „Isdastyles.css“ sorgt dabei für ein entsprechend einheitliches Layout.
-64-
Jede PHP-Seite, die im Browser etwas anzeigt und ausgibt, bindet also zunächst die
„site_structure.php“ für die Seitenstruktur ein und führt die darin enthaltenen
Funktionen aus.
Klassen und Objekte
Für die Abhandlung von Datenbankzugriffen, Prüffunktionen, Protokollfunktionen und
für das Versenden von E-Mails stehen Klassen zur Verfügung. Diese Klassen werden
von Seiten, die bestimmte Funktionalitäten benötigen, eingebunden und Objekte
erzeugt.
Die Klasse „db_functions“ (aus der Datei „db_functions.php“) stellt alle Funktionen
für den Zugriff auf die ISDA-Datenbank zur Verfügung. Sie beinhaltet die
Zugangsdaten (Host-Adresse, Username, Passwort, usw.) und SQL-Abfragefunktionen.
Somit müssen alle Datenbankabfragen über dieses Objekt realisiert werden. Dafür
existieren entsprechende Funktionen mit Rückgabewerten.
„ISDA_functions“ ist eine Klasse zu Abhandlung aller auf die ISDA-Administration
bezogenen Funktionen. Diese beinhaltet vor allem Syntax-Checks von Nutzereingaben,
das Überprüfen von Nutzer-Logins, das Zusammenbauen von SQL-Statements, usw.
Das Versenden von E-Mails wird ebenfalls durch eine Klasse „email_functions“
abgehandelt. Hier übergibt man einfach der E-Mail-Funktion in der Klasse die
Zieladresse, Betreff und Text. Ist ein Mailserver erreichbar, wird mit diversen PHPFunktionen eine E-Mail versendet.
Die
„logfile_functions“-Klasse
dient
der
Protokollierung
von
System-
und
Nutzeraktionen und sorgt für den lesenden und schreibenden Zugriff auf die ProtokollDateien. Diese Daten werden als Textdateien auf dem Webserver gespeichert.
-65-
Seiten zur Anzeige
Hiermit sind die Seiten gemeint, die tatsächlich Ausgaben auf dem Browser erzeugen.
Diese Seiten nutzen alle zunächst die gleiche Seitenstruktur über die „Site_structure“Funktionen und weiterhin bestimmte Klassen je nach Anwendungsfall.
Als Erstes ist wohl die index-Seite („index.php“) zu nennen. Diese stellt bei PHP, wie
auch in vielen anderen Technologien, den Einstiegspunkt dar. Sie beinhaltet lediglich
eine Willkommens-Seite mit einer Navigationsleiste (Links) zum Einloggen und
Registrieren.
Für die Registrierung und das Anmelden existieren weitere einzelne Seiten:
„registration.php“ und „login.php“. Weiterhin gibt es eine Seite, um Nutzerpasswörter per E-Mail zurückzusetzen, die „lost_pass.php“.
Die Seiten „activation.php“ und auch „lost_pass.php“ beinhalten noch eine spezielle
Funktion für die Bearbeitung von Aktivierungslink, die bei der Aktivierung eines neuen
Nutzerkontos oder bei dem Zurücksetzen vom Passwort per E-Mail an den Nutzer
gesendet wurden.
Die dynamische Hauptseite
Ist der Anmeldevorgang erfolgreich vonstatten gegangen und sind die Nutzerrechte
geprüft, kommt die Seite „page.php“ ins Spiel. Diese Seite stellt die Hauptseite dar und
beinhaltet alle Administrations- und ISDA-Funktionalitäten. Jedoch passt sich diese
Seite dynamisch an die Rechte des Nutzers an, der sich anmeldet, d.h. der Nutzer sieht
nur die Funktionen und Links auf der Seite, die er auch tatsächlich ausführen darf. Ein
Administrator mit vollen Rechten bekommt alle Funktionen aufgezeigt.
Fehlermeldungen
Um Fehlermeldungen und Ausgaben zentral an einem Ort zu verwalten, wird die Seite
„error_handling.php“ eingeführt. Diese besteht nur aus einer Funktion mit
Rückgabewert. In der Funktion enthalten sind alle Fehlermeldungen, die im Programm
auftreten können.
-66-
7.2.2
Programmtechnische Realisierung mit PHP und SQL
Für die Umsetzung und Programmierung des Prototyps kommt die Entwicklungsumgebung „PHP Designer 2007“ Version 5.02 von „MPSoftware“ zum Einsatz. Für alle
Arbeiten an der PostgreSQL-Datenbank wird das Tool „pgAdmin III“ (Version 1.6.2)
vom „pgAdmin Development Team“ oder alternativ auch die webbasierte Schnittstelle
„phppgadmin“ (Version 4.1.3) genutzt.
Layout
Das Layout jeder Seite wird ausschließlich durch die PHP-Seite „Site_structure“
vorgegeben. Darin befinden sich Funktionen für das Gerüst und den Aufbau der Seite,
wie HTML-Kopf („<head>“), Hauptteil („<body>“), Navigationslinks und Schluss.
Seiten, die etwas auf dem Browser anzeigen, importieren einfach diese Funktionalitäten
und rufen sie an gegebener Stelle ab.
Sessions
Die Nutzung von „Sessions“ ist entscheidend für die Frage der Sicherheit im Sinne des
Zugriffsschutzes und der unberechtigten Benutzung. Sessions bieten gleich mehrere
Vorteile, die bei der Umsetzung der Anforderungen angewandt werden konnte. Der
erste Vorteil ist, dass Sessions nach einer gewissen Zeit verfallen. Dies ist sehr nützlich,
wenn der Nutzer beispielsweise vergisst sich vom Programm oder Server abzumelden.
Sessions können weiterhin verschiedene nutzerbezogene Informationen in Variablen
speichern, die dann im Programm wieder abgerufen werden können, wie zum Beispiel
User IDs, E-Mail-Adressen oder Zeitstempel, wann ein Benutzer die letzte Aktion auf
der Seite ausgeführt hat.
PHP beinhaltet hier mehrere recht einfache Möglichkeiten, Sessions zu benutzen. Die
Wahl fiel letztendlich auf die Verwendung von Session-Cookies, die auf der Seite des
Nutzers gespeichert werden. Voraussetzung ist jedoch, dass der Browser des Nutzers
die Speicherung von Cookies akzeptieren muss.
-67-
Funktionsaufrufe
Die Prüfung von Nutzereingaben, E-Mail-Adressen, Logins, und andere „Checks“ auf
Gültigkeit werden in der Klasse „isda_functions“ durchgeführt. Diese Klasse ist
sozusagen mit Funktionen und Methoden beliebig erweiterbar und ist für alle ISDAtypischen Probleme und Abfragen erstellt worden.
Aktivierungslinks
Für die Links zur Aktivierung eines neu registrierten Nutzers, die der Nutzer nach der
Registrierung per E-Mail zugesandt bekommt, ist in der Datenbank eine eigene Tabelle
(siehe Kapitel 6, Tabelle „isda_user_activate“) eingerichtet. Diese Tabelle wird
ebenfalls für die Links beim Zurücksetzen des Passwortes verwendet.
Der Aktivierungslink beinhaltet Übergabeparameter: die user_id (d.h. das einzigartige
Erkennungszeichen des Nutzers – der Primärschlüssel in der User-Tabelle) und einen
zufällig generierten einzigartigen numerischen Code. Diese beiden Variablen stehen
zusammen mit einem Zeitstempel in der Aktivierungstabelle auf der ISDA-Datenbank.
Mit einer Datenbankabfrage wird die Übereinstimmung geprüft und bei Erfolg der
Nutzer in der User-Tabelle freigeschaltet. Im Falle einer Passwortzurücksetzung
bekommt der Nutzer die Möglichkeit dieses neu einzugeben und zu speichern.
Der Grund für diese spezielle Vorgehensweise liegt hauptsächlich im Datenschutz und
in der Absicherung gegenüber so genannten Robotern. Dies sind kleine Programme, die
zum Beispiel automatisiert Anmeldeprozesse durchführen und somit „Datenmüll“ und
Überflutungen von Daten hervorrufen.
Abspeichern sensibler Daten
Für das Abspeichern sensibler Daten auf der Datenbank, wie zum Beispiel Passwörter,
wird die in PostgreSQL enthaltene Hash-Funktion MD5 zur Verschlüsselung
verwendet. Somit ist es hier für alle Benutzer, die lesend Zugriff auf die User-Tabelle
haben, nicht möglich Passwörter im Klartext zu lesen. Dies ist auch der Grund für das
oben beschriebene Zurücksetzen des Passwortes über Aktivierungslink und erneuter
Eingabe.
-68-
Dynamischer Seitenaufbau mit der „page.php“
Am Anfang dieser Hauptseite steht die Überprüfung der aktuellen Session. Ist der
Nutzer nicht eingeloggt über die Login-Seite, hat er auch keine gültige Session bzw.
Session-Variablen und auch keine Berechtigung, die Seite zu sehen. Er wird in diesem
Fall automatisch auf die Login-Seite umgeleitet. Selbiges gilt bei den so genannten
Timeouts, d.h. wenn der angemeldete Nutzer eine bestimmte Zeit keine Aktion mehr
auf der Seite getätigt hat.
Die „page.php“ baut sich dynamisch je nach Rechten des Nutzers zusammen. Dazu
bedient sie sich der Session-Variablen. Beim Login wurden diese Session-Variablen,
die nun global auch für die page.php abrufbar sind, mit Werten wie Nutzer ID,
Nutzerrolle, E-Mail-Adresse und Zeitstempel gesetzt.
Alle Links in der Navigation rufen nun rekursiv die eigene Seite „page.php“ mit
verschiedenen Übergabeparametern auf. Diese Parameter beinhalten dann zunächst die
Aktion, die ausgeführt werden soll und ggf. weitere funktionsspezifische Parameter.
Einer der wesentlichen Vorteile für nur eine Seite, über die alle Funktionen abgewickelt
werden, besteht in der Zentralisierung und einfachen Kontrolle des Zugriffsschutzes.
Würde für jeden Link bzw. für jede Funktion auf der Seite eine neue andere Seite
aufgerufen werden, müsste jede einzelne dieser Seiten neu vor Fremdzugriff abgefragt
und aufgebaut werden.
7.2.3
Codebeispiel
Es folgen zwei Ausschnitte aus dem Prototyp, welche einige zuvor beschriebene
Funktionen praktisch verdeutlichen sollen. Der komplette Prototyp mit allen PHPDateien befindet sich auf der dieser Diplomarbeit beiliegenden CD.
-69-
Abbildung 11: Code-Ausschnitt aus "site_structure.php"
Abbildung 11 zeigt einen Ausschnitt aus der Datei „site_structure.php“ mit den
Funktionen für den Seitenkopf, -körper und -navigation. Übergabeparameter für die
einzelnen Funktionen individualisieren Titel und Überschriften der Seiten. Die Funktion
„site_navigation($array_links)“ baut die Navigation dynamisch zusammen. Sie benötigt
dazu alle gewünschten Links in einem Array als Übergabeparameter.
-70-
Abbildung 12: Code-Ausschnitt aus "page.php"
Bei diesem Code-Ausschnitt der dynamischen Hauptseite „page.php“ sieht man am
Anfang den PHP-Funktionsaufruf „session_start()“, der die Session-Cookies intern
verwaltet. Eine wichtige Funktion bei jedem Aufruf dieser Seite ist die Überprüfung der
Gültigkeit der aktuellen Nutzer-Session. Bei erfolgreichem Login (d.h. Anmelden auf
der Login-Seite – „login.php“) werden für die von PHP erstellte Session
nutzerspezifische Variablen gesetzt und abgespeichert. Diese Session-Variablen, im
Abbildung 11 erkennbar durch $_SESSION[´Variablen-Name´], werden unter anderem
-71-
bei Aufruf der Hauptseite abgefragt. Somit kann man beispielsweise den direkten
Aufruf dieser Seite im Browser unterbinden oder Timeouts bei „Nichtstun“ auf der
Seite realisieren.
7.2.4
Frontend, Layout und Design
Bei dem Layout und Design für die einzelnen Seiten gab es eine Vorgabe durch das
FZD und den Verbundpartnern des ISDA-Projektes. Nachfolgend drei Screenshots des
Prototyps vom Registrieren über das Login zur Hauptseite.
Abbildung 13: Screenshot Prototyp - Registrierung
-72-
Abbildung 14: Screenshot Prototyp - Login
Abbildung 15: Screenshot Prototyp - Hauptseite (als Administrator)
-73-
8. Fazit
In dieser Diplomarbeit werden zunächst die theoretischen Grundlagen für webbasierte
Technologien, Informationssicherheit und verschiedenste Administrationsaufgaben
webbasierter Datenbanken erörtert. Darauf aufbauend geht es im zweiten Teil darum,
die theoretisch erarbeiteten Grundlagen an einem Projekt zur Verwaltung chemischer
Stoffdaten in einer Datenbank praktisch umzusetzen. Für den zu entwickelnden
webbasierten Prototypen werden dazu zunächst eine Ist-Analyse des bestehenden
Systems und eine anschließende Anforderungsanalyse durchgeführt. Dabei kommt es
vor allem auf die Sicherheit der Daten im Sinne der Informationssicherheit und des
Zugriffsschutzes an. Weiterhin wird ein Nutzer- und Rollenkonzept für den
differenzierten Zugriff auf die Webseite entwickelt.
Bei der Ist-Analyse und Aufstellung der Anforderungen für das Administrationssystem
kam es auf einen engen Kontakt und viel Kommunikation mit den Projektpartnern an.
Dabei war es nicht immer leicht, die Ausgangssituation zu überblicken und präzise
Antworten für die genauen Anforderungen der Administrations-Seite zu bekommen.
Allgemein kann man sagen, dass die Vorabplanung und Kommunikation bei
Softwareprojekten mit heterogenen Ausgangslagen viel stärker beachtet werden muss.
Die Idee der flexiblen Eigenschaften und Attribute im Datenbankdesign ist in der Praxis
schwierig umsetzbar und geht eindeutig zu Lasten der Übersichtlichkeit. Dies betrifft
insbesondere die Übersichtlichkeit bei SQL-Abfragen.
PHP 4 für die Entwicklung des Prototyps und das Datenbanksystem PostgreSQL sind
eine gute Kombination. PHP ist eine relativ einfache Programmiersprache für die
Webentwicklung. Sie beinhaltet bereits Funktionen für Zugriff und Abfragen auf
PostgreSQL-Datenbanken. Allein die große Community um PHP, die einfache Nutzung
von Sessions zur Verwaltung von Sitzungen und die angebotenen Funktionen
ermöglichen eine schnelle, einfache Programmierung mit dieser Skriptsprache. Die
parallele Nutzung unterschiedlicher Zugriffsarten auf die PostgreSQL-Datenbank ist
jedoch ungünstig.
-74-
Zum Abschluss kann man sagen, dass die Entwicklung eines Administrationssystems,
die Gewährleistung von Sicherheit und die Einrichtung einer Nutzerverwaltung mit
vertretbarem Aufwand realisierbar sind.
Für das Forschungszentrum Dresden-Rossendorf ist diese Diplomarbeit über
Architektur und Administration einer webbasierten Datenbank ein wichtiger
Wissenszuwachs an Theorie und Vorgehensweisen. Der entwickelte Prototyp gilt als
Vorlage und wird im Rahmen des ISDA-Projektes weiterentwickelt und zum Einsatz
kommen.
-75-
Anlagen
Anlage A: Im Prototyp verwendete PHP-Klassen, -Seiten und -Stylesheets.
Folgende Tabellen zeigen die bei der Realisierung im Prototyp verwendeten PHPKlassen, -Seiten und -Stylesheets. Zu den einzelnen Seiten sind jeweils die enthaltenen
Funktion und deren Beschreibung aufgeführt.
Tabelle 11: Im Prototyp verwendete PHP-Klassen
Name
db_functions
Funktionen/Methoden
db_functions()
Pg_db_open()
Pg_db_close()
Pg_db_query($query)
ISDA_functions
ISDA_functions()
get_userID()
get_roleID
check_string($str)
check_special_characters($str)
check_E-Mail($E-Mail_address)
Beschreibung
Diese Klasse stellt die Verbindung
zur Datenbank her und realisiert
jegliche Abfragen.
Konstruktor. Hier sind die
Zugangsdaten für die Datenbank
einzugeben. Host, Datenbankname,
User, Passwort.
Öffnet eine Datenbankverbindung
mit den initialisierten Zugangsdaten.
Schließt die Datenbankverbindung
Führt den im Parameter übergebenen
SQL-Query aus.
Rückgabewert dieser Funktion ist das
Resultset.
Diese Klasse enthält alle ISDAtypischen Funktionen, wie Nutzer
prüfen, Eingabestrings prüfen,
Abfragen aufbereiten, ...
Konstruktor. Legt nur ein Objekt von
„db_functions“ an für spätere
Datenbankabfragen.
Methode zum Abruf der aktuellen
UserID
Methode zum Abruf der aktuellen
RoleID
Für Abfragen von Eingabefeldern.
Hier sind nur Buchstaben (A-Za-z)
erlaubt. Rückgabewert ist boolean.
FALSE wenn andere Zeichen
auftreten, ansonsten TRUE.
Für die Entwertung von
Sonderzeichen bei Eingaben die in
SQL-Statements eingesetzt werden
(z.B. Name: O’Shamir wird für SQL
ersetzt -> O\’Shamir).
Rückgabewert ist der komplette
SQL-String mit Entwertungen
Prüft ob ein String im E-Mail-Format
([email protected]) vorliegt und
-76-
check_user($user_E-Mail, $pass)
cleanup_users_expired()
E-Mail_functions
(Temp. Lösung)
E-Mail_functions($sender_adresse,
$ziel_adresse, $betreff, $text)
mail_senden()
logfile_functions
Logfile_functions()
add_log($wer, $wann, $was, $ok, $text)
get_log()
count_login()
nicht mehr als 50 Zeichen enthält.
Rückgabewert ist boolean. TRUE im
Erfolgsfall, ansonsten FALSE.
Prüft anhand der übergebenen EMail-Adresse und Passwort ob ein
Nutzer in der DB existiert und das
Konto aktiv ist.
Rückgabewert ist ein Array mit
roleID und userID. Bei Misserfolg
bleibt dieses Array leer.
Bei jedem Login-Versuch
irgendeines Nutzers wird vorher die
„isda_users“ Tabelle nach alten
Registrierungen durchgegangen. Ist
das „user_reg_date“ älter als 3 Tage,
wird der Datensatz in der Tabelle
„isda_users“ wieder gelöscht. Der
dazu passende Eintrag in der Tabelle
„isda_user_activate“ wird
automatisch mit gelöscht.
Nutzt das eZComponents – Modul,
welches zusätzlich geladen werden
muss.
Konstruktor. Übergabeparameter für
die Initialisierung dieses Objektes
sind die Strings: Sender-Adresse,
Ziel-Adresse, Betreff und HauptText.
Generiert ein Mail-Objekt und sendet
die Mail.
Rückgabeparameter ist boolean.
TRUE bei Erfolg.
Übernimmt das Schreiben und
Auslesen der Log-Datei.
Konstruktor
Fügt einen Log-Eintrag in die LogDatei ein. Übergabparameter sind
Nutzer-E-Mail, Datum-Zeit, Aktion,
Status und ein Text für weitere Infos.
Liest die Log-Datei zeilenweise in
ein Array und liefert dieses Array als
Rückgabeparameter zurück.
Zählt Login-Versuche
-77-
Seiten
Tabelle 12: Im Prototyp verwendete PHP-Seiten
Name
site_structures
Funktionen
site_header($seiten_titel)
site_body($ueberschrift)
site_navigation($array_links)
site_footer()
index
login
show_login_form()
registration
Eingabefelder($last, $first, $E-Mail)
activation
Beschreibung
Hier werden das Layout und die
Seitenstruktur (Gerüst) für jede Seite
zentral gehalten und kann mittels
Funktionen in jede neue ISDA-Seite
eingefügt werden.
Bildet den Anfang jeder HTML-Seite.
Übergabeparameter ist der Seitentitel.
Anfang des Bodys mit dem body-tag.
Übergabeparameter ist die Überschrift,
die über den Hauptseiteninhalt (zur
Orientierung) steht.
Baut die Navigationsleiste (links)
zusammen, je nach Anforderung einer
Seite. Übergabeparameter ist ein Array
mit den Links. Eine Schleife
durchläuft das Array und bildet die
Navigationsleiste.
Schließt jede HTML-Seite ordentlich
ab mit </div>, </body> und </html>
Startseite mit Links zu den jeweiligen
Seiten (Login, Registrierung, etc.)
Beinhaltet den Login-Prozess.
Zunächst ein Formular mit
Selbstverweis der POST-Variablen EMail und Passwort.
Sind die Eingaben semantisch korrekt,
werden die Daten in der Datenbank
geprüft und der Nutzer im Erfolgsfall
eingeloggt.
Baut das Formular mit 2
Eingabefeldern für E-Mail und
Passwort auf.
Beinhaltet den Registrierungs-Prozess.
Stellt die Eingabefelder bereit und
prüft alle einzelnen Felder auf die
jeweilige Gültigkeit. Im Erfolgsfall
wird eine E-Mail an die eingegebene
Adresse mit einem Aktivierungscode
gesendet.
Baut das Formular mit den
Eingabefeldern auf.
Übergabeparameter sind eventuell
vorher schon einmal eingegebene
Daten, damit diese nicht immer
verschwinden bei jedem kleinen
Fehler.
Wird explizit aufgerufen über den
Aktivierungslink, der per Mail bei der
Registrierung gesendet wurde. GETVariablen sind userID und
Aktivierungscode. Diese werden in der
Datenbank verglichen und das Konto
-78-
error_handling
fehler_meldung($fehler_nummer)
page
site_search, site_logout, ...
get_navigation($role_id)
lost_pass
show_pass_form($E-Mail)
Eingabefelder($uid, $code)
auf aktiv gesetzt.
Zur zentralen Verwaltung von
Fehlermeldungen mittels
Fehlernummern.
Gibt einen bestimmte Fehlermeldung
zurück. Übergabeparameter ist die
Fehlernummer.
Diese Seite stellt die Hauptseite nach
dem erfolgreichen Login dar. Sie wird
dynamisch zusammengebaut.
Seiten-Links in der dynamischen
Navigationsleiste rufen immer nur die
page.php jeweils mit anderen
Parametern auf (z.B.
page.php?par=edit)
Spezifische Funktionen, die mit den
Links aufgerufen werden
Die Navigation wird hier dynamisch
anhand der Rollen ID
zusammengebaut. Diese Funktion ist
beliebig erweiterbar.
Rückgabeparameter ist ein Array,
welches dann mit der „site_structure“Funktion „site_navigation“ die Nav.
aufbaut.
Wird aufgerufen, wenn man auf
„Passwort vergessen“ klickt. Nach
Eingabe einer E-Mail-Adresse wird ein
Link per Mail versandt.
Gleichzeitig reagiert diese Seite
ähnlich wie „activation.php“, wenn sie
explizit über den Link zum Neusetzen
des Passwortes aufgerufen wurde.
Anzeige des Eingabefeldes für die EMail-Adresse, an die der Link
gesendet werden soll.
Diese Felder werden angezeigt, wenn
der Link zum Neusetzen (aus der Mail)
verwendet wird. Im Link sind die
Parameter UserID und der zufällig
generierte Code enthalten.
Styles (CSS)
Tabelle 13: Im Prototyp verwendete Stylesheets
Name
isdastyles
Beschreibung
Enthält das Layout der ISDA Seite und
wird in der PHP-Seite „site_structure“ in
der Funktion für jeden Seitenkopf
„site_header“ geladen.
-79-
Literaturverzeichnis
Anmerkung: Das Literaturverzeichnis ist alphabethisch nach Bereichen geordnet. Alle
Internetseiten wurden am 01.10.2007 vor Drucklegung der Diplomarbeit auf Gültigkeit
und Erreichbarkeit geprüft.
Bücher [B_xxxxx9]
[B_HÄRDE1]
HÄRDER, T. u. E. RAHM: Datenbanksysteme, Konzepte und
Techniken
der
Implementierung,
Springer-Verlag
Berlin
Heidelberg New York, 2001
[B_HEINR1]
HEINRICH, L.J. u. F. LEHNER: Informationsmanagement,
Oldenbourg, 2005, Auflage 8
[B_HUSEB1]
HUSEBY, S.H.: Sicherheitsrisiko Web-Anwendung, Wie WebProgrammierer Sicherheitslücken erkennen und vermeiden,
dbpunkt.verlag GmbH, 2004
[B_LOCKE1]
LOCKEMANN, P.C. u. K. R. DITTRICH: Architektur von
Datenbanksystemen, dbpunkt.verlag GmbH, 2004
[B_LOESE1]
LOESER, H.: Web-Datenbanken, Einsatz objekt-relationaler
Datenbanken für Web-Informationssysteme, Springer-Verlag
Berlin Heidelberg, 2001
[B_LONEY1]
LONEY, K. u. M. THERIAULT: Oracle 9i, DBA-Handbuch,
Carl Hanser Verlag München Wien, 2002
[B_SPONA1]
SPONA, H.: Web-Datenbanken, Das bhv Taschenbuch, verlag
moderne industrie, Buch AG & Co. KG, Landsberg, 2002
-80-
[B_STEIN1]
STEIN, E.: Taschenbuch Rechnernetze und Internet, 2. Auflage,
Hanser Fachbuchverlag, 2003
[B_WIGAR1]
WIGARD, S.: PHP4 – Das Einsteigerseminar, 3. Auflage, bhv
verlag moderne industrie, Buch AG & Co. KG, Landsberg, 2003
Internet [I_xxxxx9]
[I_ADOBE1]
CHAMBERS, M., Macromedia Flash Artikel
http://www.adobe.com/de/devnet/articles/flash_databases/
[I_COMMO1]
Common Criteria IT-Sicherheitsportal
http://www.commoncriteria.de/
[I_DATEN1]
NRW Forschungsverbund Datensicherheit
http://www.datensicherheit.nrw.de/Information/pki/pki.html
[I_EILER1]
EILERS, C., entwickler.com, About Security #1: IT-Sicherheit,
http://entwickler.com/itr/news/psecom,id,21135,nodeid,82.html
[I_ELEKT1]
SCHNABEL, P., Das Elektronik-Kompendium
http://www.elektronik-kompendium.de/sites/net/0902281.htm
[I_JAKL1]
JAKL, M., Kryptographische Hash-Algorithmen, TU-Wien, 2003
http://int-x.org/lib/exe/fetch.php?id=uni%3Aindex&
cache=cache&media=uni:hash.pdf
[I_WLOKA1]
WLOKA, U.: E-Learning Module „Zugriff auf DB über WWW“,
Hochschule für Technik und Wirtschaft Dresden (FH), 2004
http://wwwmi.informatik.htw-dresden.de/wbt-webdb/
-81-
[I_WLOKA2]
WLOKA, U.: E-Learning Module „Datensicherheit/ Datenintegrität in Datenbanken“ , Hochschule für Technik und
Wirtschaft Dresden (FH), 2004
http://wwwmi.informatik.htw-dresden.de/wbt-ds2/
Zeitschriften und Reports [Z_xxxxxx]
[Z_BRASS1]
BRASSER, T.,
J.
MÖNIG,
C.
SCHERSCHEL,
u.
M.
VEERHOFF: Sorptions-Datenbank SODA - Datenbank zur
Bestandsaufnahme und Bewertung geochemischer Informationen
zum Verhalten von Abfallinhaltsstoffen im Deckgebirge einer
UTD/UTV.- GRS-182, 116 S. + CD, Köln, 2002
[Z_BREND1]
BRENDLER, V., A. VAHLE, T. ARNOLD, G. BERNHARD u.
T. FANGHÄNEL: RES³T – Rossendorf Expert System for
Surface and Sorption Thermodynamics. Journal of Contaminant
Hydrology 61, 281-291 S., 2003
[Z_RÜTTG1]
RÜTTGEN, C. u. T. GLEMSER, Gesundes Misstrauen –
Sicherheit von Web-Anwendungen, Seite 234, c’t, Heft 26, 2006
-82-
Glossar
ACID-Eigenschaften
ACID steht für Atomicity (Atomarität), Consistency (Konsistenz), Isolation (Isolation)
und Durability (Dauerhaftigkeit). Diese Eigenschaften werden von Transaktionen in
einem Datenbankmanagementsystem oder verteilten Systemen erwünscht.
Applikationsserver
Bezeichnet
allgemein
einen
Server
oder
auch
eine
Software
in
einem
Computernetzwerk, auf dem Anwendungsprogramme ausgeführt werden. In einer
mehrschichtigen
Architektur
befindet
er
sich
zwischen
der
Daten-
und
Präsentationsschicht auf der Logikebene und stellt Dienste, wie Transaktionen,
Authentifizierungen oder den Zugriff auf Verzeichnisdienste oder Datenbanken zur
Verfügung.
Array
Ist ein ein- oder mehrdimensionales Feld in dem Daten eines gleichen Datentyps
gehalten werden.
Biosphäre
Mit Biosphäre ist ein Teil der Erdoberfläche, der Atmosphäre sowie der lebenden
organischen Substanzen und Lebewesen definiert.
Check-Klauseln
Durch Check-Klauseln auf dem Datenbanksystem kann zum Beispiel der Wertebereich
für Tabellen-Attribute eingeschränkt werden. Es können in diesen Klauseln auch
vollständige SQL-Anfragen angegeben werden.
Common Criteria
CC (Common Criteria) sind die gemeinsamen Kriterien für die Bewertung der
Sicherheit von Informationstechnologie. Sie sind ein internationaler Standard für
-83-
Kriterien der Sicherheit von Computersystemen im Hinblick auf Datensicherheit und
Datenschutz.
Cookies
Sind Daten die zum Austausch von Informationen zwischen Computerprogrammen oder
der zeitlich beschränkten Archivierung von Informationen dienen.
Denial-of-Service-Angriffe
Denial-of-Service heißt übersetzt soviel wie Dienstverweigerung und bezeichnet hier
einen Angriff auf einen Server oder Rechner mit dem Ziel, diesen arbeitsunfähig zu
machen. In Regel wird dies durch Überlastung des Servers erreicht.
Entity-Typen
Objekte der Real- oder Vorstellungswelt werden als Entitäten bezeichnet. Entitäten mit
gleichen Eigenschaften werden zu Entitätstypen zusammengefasst. Eine Tabellen kann
also als Entitätstyp (Entity-Typ) aufgefasst werden.
Flags
Mit Flag wird eine binäre Variable bezeichnet, die als Hilfsmittel zur Kennzeichnung
bestimmter Zustände benutzt werden kann.
Hash-Funktionen
Hash-Funktionen oder auch Streuwertfunktionen sind Funktionen, die zu einer Eingabe
aus Quellmengen eine Ausgabe erzeugen. Dabei besteht die Ausgabe aus einer
bestimmten Zielmenge, die im Allgemeinen kleiner ist als die Eingabewerte mit
beliebiger Größe. Hash-Werte sind meist skalare Werte aus einer Teilmenge der
natürlichen Zahlen.
Head-Crash
Dieser Begriff Head-Crash bezeichnet den mechanischen Ausfall einer Festplatte durch
den Lese-/Schreibkopf bei dem meist alle Daten verloren gehen.
-84-
JDBC-API
JDBC ist eine Datenbankschnittstelle (API - Application Programing Interface) der
Java-Plattform, die eine einheitliche Schnittstelle zu Datenbanken verschiedener
Hersteller bietet.
JSP-Compilers
JavaServer-Pages ist eine von SUN Microsystems entwickelte Technologie, die zur
einfachen dynamischen Erzeugung von HTML- und XML-Ausgaben eines Webservers
dient.
Knowledgebase-System
Damit ist eine spezielle Datenbank für das Wissensmanagement gemeint. Sie stellt die
Grundlage für die Sammlung von Daten dar und enthält meist explizites Wissen in
schriftlicher Form.
Kontaminanten
Sind unerwünschte, giftige Stoffe und Verunreinigungen wie zum Beispiel
Schwermetalle und verschiedene Umweltgifte.
OSI-Modell
Das Open Systems Interconnection Reference Model ist ein Schichtenmodell nach dem
ISO-Standard. Dieses beschreibt sieben aufeinander aufbauende Schichten und deren
Aufgaben der Kommunikation. Für jede Schicht existiert eine Beschreibung, was diese
zu leisten hat.
Parsing
Mit diesem Begriff wird die Umwandlung von Befehlen und Eingaben in einem
Computerprogramm durch einen Parser bezeichnet. Dieser Parser wandelt eine
beliebige Eingabe in ein für die Weiterverarbeitung brauchbares Format um.
-85-
PostgreSQL
PostgreSQL ist ein freies objektrelationales Datenbanksystem, welches weitestgehend
konform ist mit jeglichen SQL-Standards.
RAID
Ein RAID-System (Redundant Array of Independent Disks) dient zur Organisation
mehrerer physischer Festplatten eines Computers zu einem logischen Laufwerk. Dies
gewährleistet eine höhere Datensicherheit bei Ausfall einer Platte und/oder erlaubt einen
größeren Datendurchsatz als nur eine physische Platte.
Reverse-Engineering
Ist die Rekonstruierung aus einem bestehenden, fertigen System bzw. Objekt zurück zu
einem Plan oder Modell. In der EDV ist dabei meist die Rückgewinnung von einem
Quellcode aus einem Programm oder Binärcode gemeint.
Rollback
Bezeichnet das Zurücksetzen einzelner Verarbeitungsschritte einer Transaktion.
Session
Eine Session bezeichnet hier eine logische Verbindung zwischen zwei adressierbaren
Einheiten in einem Netzwerk, um Daten auszutauschen. In der Client-Servertechnik ist
es die zeitweise bestehende Verbindung eines Clients und eines Server.
Sorption
Bezeichnet die chemische Wechselwirkung von im Wasser gelösten Schadstoffen und
dem umgebenden Gesteinsmaterial.
Thin Client
Ein Thin Client ist ein Endgerät oder Programm in einem Netzwerk, dessen funktionale
Ausstattung auf die Ein- und Ausgabe beschränkt ist. Er bezieht seine Daten möglichst
vollständig von einem Server.
-86-
Trigger
Hiermit ist ein Datenbanktrigger gemeint. Dieser ist eine Funktionalität von diversen
Datenbankmanagementsystemen. Er ruft bei einer bestimmten Art von Änderung in
einer Tabelle eine gespeicherte Prozedur auf, die diese Änderung akzeptiert, verhindert
oder andere Tätigkeiten ausführt. Änderungen können zum Beispiel bei SQL INSERT,
UPDATE oder DELETE sein.
-87-
Danksagung
Ich möchte mich an dieser Stelle bei all denen bedanken, die mich bei der Bearbeitung
meines Diplomthemas unterstützt haben. Für die Betreuung meiner Diplomarbeit danke
ich Herrn Prof. Gunter Gräfe von der Hochschule für Technik und Wirtschaft Dresden
und Herrn Dr. Vinzenz Brendler vom Forschungszentrum Dresden Rossendorf e.V. Des
Weiteren gilt mein Dank den Verbundpartnern im Verbundprojekt ISDA, besonders
Herrn Scherschel von der Dr. Veerhof und Scherschel GbR und Herrn Brasser von der
Gesellschaft für Anlagen- und Reaktorsicherheit (GRS) mbH.
-1-
Eidesstattliche Erklärung
Hiermit erkläre ich, dass ich die von mir am heutigen Tag eingereichte Diplomarbeit
selbstständig verfasst und ausschließlich die angegebenen Hilfsmittel benutzt habe.
Alexander Ihlau
Dresden, den 15.10.2007
Herunterladen