8 Informationssysteme für das World-Wide

Werbung
8 Informationssysteme für das World-Wide-Web
Motivation:
➢ Viele Informationssysteme stehen heute nicht mehr nur einem eng eingerenzten Nutzerkreis
zur Verfügung, sondern sind über Netze mit Internet-Technologie (TCP/IP) unternehmensweit
(Intranet) oder weltweit (Internet) erreichbar.
➢ Viele Informationsangebote im Internet unterliegen häufigen Änderungen, werden von mehreren
Personen gepflegt, entstammen verschiedenen operativen Systemen, o.ä. und sollen daher aus
einer Datenbank heraus angeboten werden.
Konsequenz: Koppelung DBMS ↔ WWW-Technologie erforderlich!
Dazu hier eine erste Übersicht:
➢ Datenaustausch im WWW
➢ Dynamische HTML-Dokumente
➢ Datenbankanbindung
➢ Transaktionen
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-1
8.1
Datenaustausch im WWW
➢ Internet:
❏ über 10 Mio. Rechner angeschlossen (1997)
❏ keine zentrale Kontrolle bei der Datenübertragung
❏ redundante Verbindungen
❏ Protokolle: HTTP, TCP/IP
❏ Kosten (1997): Anschluss an das DFN-Breitband-Forschungsnetz:
✧ 690.000 DM für Einzelanschluss mit 34 Mbit/s bzw.
✧ 69.000 DM plus Leistungskosten zum nächsten B-WIN-Knoten für Anschluss mit 2
Mbit/s.
➢ Internet-Adressen:
❏ eindeutige Identifikation jeden Rechners, der am Internet angeschlossen ist (genauer: jedes
Netzwerkanschlusses)
❏ 32bit-Zahlen, geschrieben: 134.33.44.55
❏ Vergabe durch NIC (Network Information Center), Deutschland: DE-NIC
➢ Domain Name Service:
❏ symbolische Namen statt numerische Adressen
❏ Beispiel: horn.fmi.uni-konstanz.de
❏ hierarisch organisiert:
✧ jeder Name Server (NS) kennt alle direkt untergeordneten Server
✧ jeder Client kennt mindestens einen Root-Server.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-2
Klient (Rechner)
Netzwerk
Server (Rechner)
Anfrage (Request)
Antwort
- Display
- Benutzer-Interaktion
- Generierung von Requests
- Verarbeitung von Request
(mehrere/parallel)
- Management der verschiedenen
Verbindungen
- Ausführung von Programmen
- Sicherheitsüberwachung
-Integrität/Nebenläufigkeit
Abbildung 8-1: Architektur einer verteilten Anwendung
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-3
WWW-Server
WWW-Klient
(Browser)
Anfrage (Request)
Antwort
Antwort
Anfrage (Request)
Programm
Antwort
Anfrage (Request)
Datenbank
Abbildung 8-2: Eine Internet-orientierte Architektur
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-4
➢ Datenübertragung durch TCP/IP-Protokoll:
❏ Verschickung von Datenpaketen
❏ Isolierte Behandlung einzelner Pakete (1500/Byte pro Paket)
❏ Pakete werden ggf. weiter fragmentiert
❏ Routing durch Gateways
❏ Benutzersicht: Bytestrom (nicht blockweise)
❏ voll-duplex (zwei Verbindungen: von A nach B und von B nach A)
❏ Zuverlässigkeit: Empfänger schickt Quittung zurück.
❏ Zeitgleich mehrere Verbindungen zu/von einer Maschine möglich
❏ Port: Verbindungsnummer (16bit)
❏ Ports werden vom Betriebssystem auf Anforderung des Client zugewiesen.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-5
8.1.1
Struktur eines HTML-Dokuments
➢ HTML (HyperText Markup Language) entspricht SGML-Standard (genauer entspricht SGML
mit einer vom W3-Konsortium (W3C) festgelegten Document Type Definition“)
”
➢ HTML ist eine Markup Language“, d.h. sie beschreibt die (visuelle) Präsentation des Inhaltes;
”
die logische Struktur wird nur sehr rudimentär beschrieben (siehe dazu z.B. XML)
➢ Grundlegende Bestandteile eines HTML-Dokuments:
❏ Kopf und Rumpf
❏ Titel im Kopf (zwingend)
❏ Keine weiteren Markups im Titel
❏ Paragraphen
❏ Überschriften
❏ Verweise
❏ sowie div. Darstellungshinweise (das eigentliche Markup)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-6
➢ Beispiel:
<!-- infsys-ws9900.html WWW-Seite zur Vorlesung
"Informationssysteme" WS 99/00 -->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head>
<title>Vorlesung "Informationssysteme"</title> </head>
<body bgcolor=#ffffff> <h1>Vorlesung <br> "Informationssysteme"
</h1> <b>Wintersemester 99/00</b>
(...)
<!--#include virtual="/include/footer"-->
<address><a href="/~riedel/" target=_top>Holger Riedel</a> <<a
href="mailto:[email protected]">[email protected]</a>></address
<!-- last modified start --> Last modified: Oct 13, 1999 <!-- last
modified end --> </body> </html>
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-7
➢ Weitere Bestandteile:
❏ Steuerung von Zeilenumbrüchen:
✧ <BR>: break“, erzwungener Zeilenumbruch
”
✧ <NOBR> . . . </NOBR> Inhalt ganz auf einer Zeile (nicht in HTML 3.2)
✧ &nbsp non breakable space“: Leerzeichen, bei dem kein Zeilenumbruch geschehen darf
”
✧ <PRE> . . . </PRE>: Vorformatierter Text:
– Zeilenumbrüche und aufeinanderfolgende Leerzeichen werden beachtet
– Verwendung von nichtproportionalen Schriften
– Tags werden interpretiert.
❏ Strukturierung des Textes:
✧ Die folgenden Kommandos beginnen einen neuen Paragraphen.
✧ <P>...[</P>]: Paragraph, auch zentriert (align=center) oder rechtsbündig
(align=right) möglich
✧ <UL>...</UL>: Ungeordnete Liste, d.h. einzelne Punkte nicht numeriert. Listenelement:
<LI>; Symbol wählbar, type=disk, square, circle
✧ <OL>...</OL>: geordnete Liste. Art der Numerierung kann vorgegeben werden (type=,
start=)
✧ <DL>...</DL>: Definitionsliste (links Begriff, rechts Erklärung)
✧ <BLOCKQUOTE>: eingerückte Zitate
✧ <DIV>...</DIV>: Abschnitte ( Division“)
”
✧ <CENTER>...</CENTER>: Zentrierung
✧ <HR>: Horizontale Trennlinie, Parameter align, noshade, width
✧ sonstige Block-Tags: <FORM>, <ISINDEX>, <TABLE>, <PRE>
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-8
❏ Überschriften, Adresse:
✧ dürfen nur auf oberster Ebene vorkommen
✧ H1,...,H6, ADDRESS
❏ Hypertext-Links:
✧ Beispiel: <a href="/~riedel/" target=_top>Holger Riedel</a>
➢ URL (Uniform Resource Locator):
❏ http://host[:port][/path[?search]]
❏ ftp://[user[:password]@]host[port][path[;type=]]
❏ mailto: user@domain
❏ file://[host]/path
❏ telnet://[user[:password]@]host[:port][/]
❏ Weitere Protokolle: news, nntp, wais, gopher, prospero
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-9
➢ Bilder:
❏ eigene Daten: etwa GIF, JPEG
❏ Einbindung in HTML: <IMG src="photo.jpg">
❏ Anordnung durch align-Attribut
❏ Durch <IMG src="Foto.jpg" alt="Mein Foto"> kann Text festgelegt werden, der
alternativ zum Bild im Browser gezeigt wird.
❏ Größe kann festgelegt werden: width=Pixel, height=Pixel
❏ Browser wie Netscape oder Internet-Explorer können Bilder auch skalieren.
❏ Bildformat GIF:
✧ komprimiert mit LZW-Verfahren
✧ Farbtabelle: max. 256 Farben
✧ Bilder können interleaved abgespeichert werden.
❏ Bildformat JPEG:
✧ JPEG = Joint Photographic Expert Group
✧ echte“ Komprimierung unter Berücksichtigung des menschlichen Sehvermögens
”
❏ Anklickbare Bilder: <MAP>-Kommando
➢ Tabellen
❏ ab HTML 3.0
❏ Tabelle besteht aus Tabellenbeschriftung (optional) und Tabellenzeilen
❏ Begrenzungslinien können durch <TABLE border=Pixel> gesetzt werden
❏ weitere (optionale) Formatierungen: Breite, Höhe (auch für einzelne Einträge), Ausrichtung einzelner Tabellenelemente, Ausdehnung einzelner Tabelleneinträge über mehrere
Zeilen/Spalten
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-10
Style-Guides
Sammlung von Design-Richtlinien für ein einheitliches Erscheinungsbild. Als reine Anleitung für
Personen Web-Seiten gestalten, oder (teilweise) Unterstützung durch Werkzeuge (html-Editoren,
(Cascading) Style Sheets, . . .) Beispiel:
1. Verwenden Sie durchgehend einen Präsentationsstil
2. Seien Sie vorsichtig beim Einsatz von nicht standardisierten HTML-Tags
– verschiedene Browser, Benutzergruppen
– ggf. alternative Seiten anbieten
3. Achten Sie darauf, dass Ihre Dokumente glaubwürdig aussehen
– u.a. Angabe von Autor ((Email-) Adresse), Datum
4. Strukturieren Sie Ihr Dokument in vernünftiger Weise
5. Verbessern Sie die Lesbarkeit Ihres Dokuments
6. Erzeugen Sie sinnvolle Links
7. Achten Sie auf vernünfitge Benennungen der Links
8. Achten Sie auf die Verfügbarkeit der Links
9. Seien Sie vorsichtig beim Einsatz von Bildern
10. Lesen Sie Ihre Seiten Korrektur
11. Schreiben Sie gutes“, d.h. korrektes HTML (es gibt entsprechende Checker)
”
12. Planen Sie ihre weiteren Aktivitäten vorausschauend
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-11
8.1.2
HTTP-Server-Dienste
➢ Allgemeiner Ablauf der HTTP-Kommunikation:
❏ Verbindungsaufbau durch den Client durch URL
❏ DNS-Lookup für den angesprochenen Rechner, danach TCP-Verbindung zu dem angesprochenen Port
❏ Request: der Client fordert ein Objekt/Entity vom Server an mittels einer lesbaren
Nachricht
❏ Antwort: Der Server antwortet mit einem Dokument, wobei vorher bestimmte Meta-Daten
versandt werden.
❏ Abbau der Verbindung durch den Server
➢ Methoden:
❏ GET: Hole die unte dem angegebenen Pfad gespeicherten Daten (das Entity). Der Pfad
kann auch ein Programmname sein, gefolgt von ?-Argumenten. Dann wird die Ausgabe
des Programms zurückgegeben.
❏ HEAD: Wie GET, aber es wird nur der Header mit den Meta-Daten, nicht das eigentliche
Objekt/Entity zurückgeliefert.
❏ POST: Es wird ein Objekt vom Client zum Server übertragen, die einer angegebenen URL
zugeordnet werden. Beispiele:
✧ URL beschreibt ein Programm, das Formulardaten im Entity verarbeitet
✧ Newsgroup, in der das Dokument veröffentlicht werden soll.
Die auszuführende Aktion bestimmt der Server abhängig von der URL (keine Vorgaben
durch das HTTP-Protokoll)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-12
➢ Beispiel:
riedel @ horn: ~/Mail <118> % telnet horn.informatik.uni-konstanz.de 8892
Trying 134.34.57.32...
Connected to horn.informatik.uni-konstanz.de.
Escape character is ’^]’.
get http://horn.informatik.uni-konstanz.de:8892/
<HTML>
<HEAD>
<TITLE>Oracle Web Application Server 3.0</TITLE>
</HEAD>
<BODY background="/ows-img/orhmbkgn.jpg" link="#BB0000" vlink="#BB0000">
<center><table>
<tr><td width=560>
<center>
<IMG SRC="/ows-img/ows.gif" width=560 height=116 ALT="Oracle Web Application Server">
<H2>
<font color="#BB0000">
<EM>Technische Dokumentation für den
Oracle Web Server der Informatik der Universität Konstanz</EM>
</font>
</H2>
(...)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-13
➢ Weitere Methoden (nicht immer realisiert)
❏ PUT: Das Entity soll an der angegebenen URL gespeichert werden.
❏ DELETE: Das Entity an der angegebenen URL soll gelöscht werden.
❏ LINK/UNLINK: Eine Beziehung zwischen existierenden Entities wird eingetragen/gelöscht.
❏ HTTP erlaubt auch selbstdefinierte Methoden.
➢ Entity-Header:
❏ Allow: implementierte Zugriffsmethoden (GET, HEAD)
❏ Content-Encoding: (Beispiel: x-gzip)
❏ Content-Type: text/html
❏ expires
❏ Last-Modified
❏ Content-Language z.B.: de
❏ Link: Verweis auf andere Dokumente, Einstiegsseiten, Inhaltsverzeichnis, Hilfeseiten, etc.
➢ Request-Header:
❏ If-Modified-Since (Datum und Uhrzeit): Entity soll nur verschickt werden, falls es seit
dem agegebenen Datum verändert wurde.
❏ User-Agent: z.B. Mozilla/3.01Gold
❏ From: z.B.: [email protected]; fragwürdig wg. Datenschutz
❏ Referer: URL, von dem aus das aktuelle Dokument referenziert wurde
❏ Authorization: Benutzer/Passwort (Warnung: sehr leicht zu entschlüsseln!)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-14
➢ Zusätzliche Request-Header:
❏ Accept: Medientypen, die der Client akzeptiert, mit Präferenzen
❏ Accept-Language: z.B.: q=0.9; Präferenzen des Servers werden mit den Präferenzen des
Client multipliziert!
❏ Accept-Charset
❏ Accept-Encoding
➢ Allgemeine Header:
❏ Date: Datum/Uhrzeit der Erzeugung
❏ Pragma: z.B.: no-cache
❏ MIME-Version: 1.0
➢ Response
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-15
➢ Status-Codes:
1xx Reserviert
2xx Aktion ausgeführt
3xx
Dokument ist verschoben
4xx
Fehler des Clients
5xx
Fehler des Servers
200
201
202
204
301
302
304
401
403
501
503
-
OK
Created
Accepted
No content
Moved permanently
Moved temporarily
Not modified (Re: If-Modified-Since)
Unauthorized
forbidden
Not implemented
Service unavailable
➢ Reponse-Header:
❏ Location: http://... (vollständige URL)
❏ Server
❏ WWW-Authenticate: Forderungen an den Client
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-16
➢ Cookies:
❏ Nach dem Response vergisst der Server alle Informationen über den Client (aus
Effizienzgründen, zustandsloses Protokoll“)
”
❏ Wie bei Batch-Verarbeitung müssen alle Eingabedaten mit dem Request mitgeschickt
werden.
❏ Es wurden dafür Cookies eingeführt:
✧ der Server schickt weitere Daten an den Client
✧ der Client speichert diese (z.B. in .netscape/cookies/)
✧ Bei weiteren Requests an diesen Server wird der Cookie mitgeschickt.
✧ Beispiel:
telnet www.infoseek.com 80 GET / HTTP/1.0
-> InfoSeekUserID=19... domain=infoseek.com;path=...
expires=Thu, 05 Nov 1998 08:53:30 GMT
✧ typische Anwendung: Erkennung von Benutzern, Benutzer-Präferenzen
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-17
8.2
8.2.1
Dynamische HTML-Dokumente und DB-Anbindung
Statische vs. Dynamische Seiten
➢ bisherige Annahme: HTML-Dokument ist ein File, dessen statischer Inhalt auf Anforderung
übertragen und angezeigt wird.
➢ Nachteil: Oft ist es wünschenswert, dass das HTML-Dokument speziell für bestimmte
Szenarien (Benutzer, Datum/Zeit, Ursprung der Anforderung, Parameterangaben, . . .) erstellt
wird und auf spezielle Anforderungen reagieren kann.
➢ Weitere Motivation: Viele Informationssysteme sollen über Web-Schnittstellen zugänglich
gemacht werden (web enabled IS), z.B. wg. der Plattformunabhängigkeit der Interfaces
➢ Man kann grundlegend zwei Möglichkeiten zur Gestaltung dynamischer Inhalte unterscheiden:
❏ Übertragung eines Seiteninhaltes mit lauffähigen Komponenten (Scripts, Java-Applets,
Active-X, . . . ) an den Browser, Dynamik“ entsteht durch Ausführung dort.
”
❏ Übermittlung eines statischen HTML-Dokuments, das auf der Serverseite für die konkrete
Anforderung dynamisch durch ein Programm erzeugt wird (aus einer DB, cgi-bin’s, Active
Server Pages, Java-Servlets, . . .).
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-18
Sicherheitsüberlegungen
Beide Varianten haben Vor- und Nachteile, insbesondere beinhalten beide Sicherheitsrisiken:
➢ . . . bei der ersten Variante (aktive Seiteninhalte) für den Klienten (Informationsnutzer):
fremder Programm-Code wird auf der Maschine des Klienten ausgeführt (Maßnahmen:
möglichst eingeschränkte Funkionalität und Ausführungsumgebung, siehe Java Sandbox“”
Modell)
➢ . . . bei der zweiten Variante (aktive Server-Erweiterungen) für den Server (Informationsanbieter): je nach Realisierung wird u.U. fremder Code auf dem Server ausgeführt
(Maßnahmen: möglichst eingeschränkte Funkionalität, Ausführungsumgebung und Berechtigungen, Schlupflöcher bei Parameterübergabe kritisch!)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-19
8.2.2
Server-Erweiterungen
Derzeit werden verschiedene Möglichkeiten angeboten, auf der Seite des http-Servers Erweiterungen zur Generierung dynamischer Seiteninhalte einzubauen. Unter anderem:
➢ Common Gateway Interface (CGI):
Ältester (und damit am weitesten verbreiteter) Ansatz, unabhängig von einer Datenbankanbindung, aber auch für diesen Zweck nutzbar.
Der Web-Server ruft ein Programm (in beliebiger Programmiersprache) auf, übergibt codierte
Eingabeparameter, Programm erzeugt Ausgabe in Form eines html-Files, dieses wird an
aufrufenden Client übermittelt.
➢ Speziallösungen der DBMS-Hersteller:
Viele (relationale, objektorientierte) Datenbanksysteme bieten spezielle Erweiterungen ihrer
DBMS-Server zur Anbindung an Web-Server. So z.B. der Oracle Web-Server, der intern
ebenfalls CGI in Verbindung mit Stored SQL Procedures nutzt.
➢ Personal Homepage Parser (PHP):
Web-Server-Erweiterung mittels einer besonderen Script-Sprache (PHP), mit der Formulare
ausgelesen, DB-Aufrufe abgesetzt und Ergebnisse in HTML aufbereitet werden können.
Im Gegensatz dazu:
➢ Java Database Conncetivity (JDBC):
Java-Erweiterung zur Formulierung von DB-Anfragen und Verarbeitung der Ergebnisse.
Anders als bei den obigen drei Varianten entsteht Dynamik hier durch Ausführung von
(JDBC-) Programmen auf Client-Seite!
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-20
8.2.3
Common Gateway Interface (CGI)
Standardisierte Zugriffsmethode:
➢ Bestimmte URLs liefern nicht HTML-Dokumente, sondern führen auf dem HTTP-Server
vorhandene Programme aus.
➢ Der HTTP-Server verwaltet die Information, welche URLs als Programm interpretiert werden.
Insbesondere wird durch die Definition von virtuellen Pfaden festgehalten, wie diese über die
URL zu erreichen sind und wo sie sich im Filesystem befinden. Dies führt insbesondere dazu,
dass die Struktur des Filesystems nicht nach außen veröffentlicht werden muss (Sicherheit !)
➢ CGI-Programme können jeder beliebigen Programmiersprache (C, Perl, Java, etc.) geschrieben
sein. Wichtig ist die standardisierte Parameterübergabe und dass diese Programme HTMLCode als Ausgabe generieren.
➢ Aufruf der CGI-Programme (d.h. entpsr. URLs) können
(<form method=... action=...>) eingebaut werden.
in
ein
HTML-Formular
➢ CGI ist nicht sehr effizient: Für jede Anfrage wird ein Prozess auf der Serverseite
gestartet. (Verbesserung: Der Oracle Webserver verwendet hier ein effizienteres Prozess- und
Caching-Konzept.)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-21
Ablauf
Client (Anwendung)
Web-Server
HTML-Datei
mit Formular
CGI-Script
aufrufen
Formular
abschicken
übertragen
automatisch
erzeugte
HTML-Datei
ServerRechner
CGI-Script
HTML-Datei
aus AnfrageErgebnis erzeugen
automatisch
erzeugte
HTML-Datei
Datenbank
DB abfragen;
Anfrageergebnis
auswerten
Abbildung 8-3: Datenfluss bei CGI-Skripten
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-22
Sicherheit
➢ Die Ausführung von CGI-Programmen auf dem Server stellt ein hohes Risiko dar:
➢ Alle Welt kann (die zur Verfügung gestellten) Programme auf dem Server ausführen.
➢ Dies kann schnell dazu missbraucht werden, dass vom Benutzer als Parameter ausführbare
Programme übergegeben werden.
➢ Beispiel Perl:
❏ Programm: system finger $username;
❏ übergegebener Parameter: james;rm -rf /
➢ ggf. können durch einen Hacker mittels telnet selbst Eingabefelder mit vorgegebenen Werten
gecrackt werden!
➢ Abhilfe: CGI-Programme sollen unter möglichst niedrigen Prioritäten/Rechten laufen (auf
Unix-Servern etwa user nobody)
Probleme dann z.B.: fehlende Zuordbarkeit zu einem Benutzer; fehlende Schreibrechte; Hacker
kann nobody dafür verwenden, um Log-Dateien zu manipulieren.
➢ Grobe Schnitzer bei der Web-Server-Konfiguration, z.B.:
❏ WWW-Server als root laufen zu lassen.
❏ Shells, Perl-Interpreter als CGI verfügbar
❏ Verfügbarkeit des Quellcodes von CGI-Programmen
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-23
Parameter-Übergabe der Daten an das CGI-Programm:
➢ String der Form Feld1=Wert1&. . .&Feld$n$=Wert$n$
➢ Leerzeichen werden durch +“ ersetzt.
”
➢ Jedes Zeichen kann hexadezimal übertragen werden %XY, z.B. %3D entspricht =.
Methode GET:
➢ Parameter werden in der URL nach einem ? angehängt
(Beispiel: http://www.mycom.com/cgi-bin/myprog?Name=Riedel&Vorname=Holger)
➢ Der Server speichert die Parameter in der Umgebungsvariablen QUERY_STRING und führt das
Programm aus.
➢ Anmerkungen:
❏ GET nur bei Übergabe kleinerer Datenmengen sinnvoll
❏ GET nicht sinnvoll bei Zustandsänderungen auf dem Server
Methode POST:
➢ Der Client überträgt die Eingabedaten im Datenteil des POST-Request.
➢ Das CGI-Programm liest von der Standardeingabe (Längenbegrenzung: (Anzahl Bytes) in
Umgebungsvariable CONTENT_LENGTH)
➢ Man sollte überprüfen, dass CONTEXT_TYPE application/x-www-form-urlencoded ist.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-24
Verwendete Umgebungsvariablen z.B. (weitere siehe Dokumentation):
➢
➢
➢
➢
➢
➢
➢
➢
CONTENT_LENGTH, CONTEXT_TYPE, QUERY_STRING
REQUEST_METHOD: z.B. GET, HEAD, POST
PATH_INFO: etwa http://www.mycom.com/cgi-bin/myprog/x/y“ → PATH_INFO=/x/y
”
SCRIPT_NAME: Programmname mit Pfad (hier cgi-bin/myprog)
SERVER_NAME
REMOTE_ADDR: IP-Adresse des Rechners, der den Request abgesetzt hat.
HTTP_ACCEPT: z.B.: image/gif, */*, ...
HTTP_USER_AGENT
Kommandozeilen-Argumente: Wenn der Parameterstring keine Feldangaben enthält, werden die
einzelnen Worte (getrennt durch &) als Kommandozeilenargumente übergeben.
Ausgabe des CGI-Programms:
➢ Header, Leerzeile, Daten
➢ Der Server versteht u.a. folgende Header: Content-Type, Location, Status
➢ Es ist möglich, HTTP-Header von CGI-Programmen erzeugen zu lassen (oft müssen dann
diese Programme mit nph- anfangen)
Debugging:
➢ Test des CGI ohne HTTP-Daemon sinnvoll
➢ Auch die WWW-Seite muss natürlich getestet werden!
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-25
8.2.4
Personal Homepage Parser (PHP)
. . . grundsätzliches Vorgehen wie bei CGI-Skripten: serverseitige Ausführung zur Erzeugung von
HTML-Seiten.
➢ Unterschiede: eigene Programmierumgebung (Script-Sprache) mit komfortableren Funktionen
für DB-Anbindung, HTML-Generierung, Dateizugriffe, usw.
➢ Parameterübergabe und Sonderzeichen-Behandlung einfacher als bei CGI
➢ dafür jedoch neue, ungewohnte Programmierumgebung
➢ auch hier Performance-Probleme, da PHP-Programm nach jeder Interaktion neu gestartet
wird
➢ es gibt Möglichkeiten für persistente DB-Verbindungen, die über die Ausführung des Scripts
hinaus bestehen bleiben
➢ Details siehe www.php.net sowie unsere Übungsaufgaben!
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-26
Ablauf
Client (Anwendung)
HTML-Datei
mit Formular
Web-Server
Web-Server
PHP-Script
aufrufen
PHP-Script
Formular
abschicken
HTML
übertragen
automatisch
erzeugte
HTML-Datei
PHP-Modul
PHP-Script interpretieren
DB abfragen;
Anfrageergebnis auswerten
Datenbank
Abbildung 8-4: Datenfluss bei PHP-Skripten
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-27
8.2.5
Datenbankanbindung
Vorteile von Datenbanken
➢ Alle Daten werden zentral verwaltet
➢ Backup- und Recovery-Mechanismen direkt verfügbar
➢ Parallele Zugriffe (auch schreibende) werden vom Datenbanksystem synchronisiert
WWW-DB-Gateways
➢ Die Interaktion zwischen Browser und Datenbank kann auf verschiedene Weise realisiert
werden:
❏ CGI-basiert: Der Benutzer startet ein CGI-Programm, das wiederum die Verbindung zur
Datenbank aufbaut, Daten mittels SQL extrahiert und zurückgibt. Nachteile:
✧ Viele Detailkenntnisse notwendig: HTML, CGI, SQL, SQL-Einbettung
✧ Einbindung von kleinen dynamischen Anteilen in eine im wesentlichen statische
HTML-Seite sehr umständlich (durch viele print-Befehle)
✧ Performance-Probleme
❏ Java-basiert: JDK-1.1 enthält standardisierten Zugriff auf Datenbanken (mittels JDBC).
❏ Datenbankerweiterungen speziell für ein DBMS eines Herstellers
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-28
✧ Beispiel: Oracle Web-Server
– spezielle Web-Listener warten auf Requests (Zuordnung durch virtuelle Pfade)
– Ausführbare Programme können Stored Procedures der Datenbank sein.
– Oracle bietet fertige Packages an, die zur Generierung von HTML-Dokumenten
verwendet werden können.
– Add-ons für Sicherheit, Transaktionen, etc.
– Weitreichende Administrierungsmöglichkeiten
❏ Generierung von Web-Anwendungen aus bereits vorhandenen Datenbank-StandardAnwendungen (Forms, Reports)
❏ Bereits verfügbar: Spezielle Middleware mit integriertem Datenbankzugriff (etwa für
Online-Banking, E-Commerce)
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-29
Transaktionen
In vielen komplexeren Anwendungen tritt folgendes Problem auf:
➢ Mehrere zusammenhängende, nacheinanderfolgende Web-Zugriffe sollen als Einheit interpretiert werden, d.h.:
❏ sie sollen einer ausführenden Person zugeordnet werden
❏ sie sollen ggf. aufeinander aufbauen können
❏ sie sollen ggf. zusammenhängend zurückgenommen werden können.
➢ Problem:
❏ Das World-Wide-Web (=http) ist zustandslos (im Gegensatz zu einer Datenbank-Session)
❏ Die Benutzer sind nur unzureichend authentifiziert
❏ Die Benutzer entsprechen nicht autorisierten Benutzern des Servers oder der Datenbank.
➢ Lösungen:
❏ Übermittlung von Passwörtern durch den Web-Browser (oft unzureichender PasswortSchutz auf Serverseite !)
❏ Verbindung von einzelnen Seiten durch
✧ Cookies, Hidden Fields, Transaktionsnummern, . . .
❏ Bewertung: relativ unsicher, da der Verkehr zwischen Browser und Server leicht abgefangen
und ggf. manipuliert werden kann.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-30
8.3
Beispiel: Dynamische HTML-Seiten mit Oracle-PLSQL-Cartridge
➢ Beispiel: Ausgabe aller Benutzer der Datenbank in einer HTML-Tabelle
❏ PL/SQL-Prozedur current_users
00001 procedure current_users
00002 AS
00003
ignore boolean;
00004
BEGIN
00005
htp.htmlopen;
00006
htp.headopen;
00007
htp.title(’Current Users’);
00008
htp.headclose;
00009
htp.bodyopen;
00010
htp.header(1, ’Current Users’);
00011
ignore := owa_util.tableprint(’all_users’);
00012
htp.bodyclose;
00013
htp.htmlclose;
00014
END;
❏ Verwendete Funktionen (gibt es zusätzlich für Oracle):
✧ htp.htmlopen generiert <html>
✧ htp.title(’Current Users’) erzeugt <title>Current Users</title>
✧ owa_util.tableprint: Datenbankabfrage und Ausgabe als HTML-Tabelle.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-31
❏ Ausführung durch URL:
http://horn.fmi.uni-konstanz.de:9080/oas/riedelh/plsql/current_users
❏ Ergebnis (als HTML-Seite):
❏ Aufruf durch eine HTML-Seite:
<HTML> <HEAD> <title>Current Users</title> </HEAD> <BODY>
<H1>Current Users</H1> <p><a target="_top"
href="http://horn.fmi.uni-konstanz.de:9080/riedelh/plsql/current_users
Run current_users</a> </BODY> </HTML>
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-32
8.4
Zusätzliche Literaturhinweise
Assfalg, R., U. Goebels und H. Walter (1998). Internet-Datenbanken: Konzepte, Modelle, Werkzeuge. AddisonWesley.
Greenspun, P. (1998). Datenbankgestuetzte Web-Sites. Hanser.
Mohseni, P. (1996). Web Database - Primer Plus. Mitchell-Waite.
c M. Scholl, 2001/02 – Informationssysteme: 8. Informationssysteme für das World-Wide-Web
8-33
Herunterladen