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> &lt;<a href="mailto:[email protected]">[email protected]</a>&gt;</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&uuml;r den Oracle Web Server der Informatik der Universit&auml;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