Upload
engel-heinert
View
103
Download
0
Embed Size (px)
Citation preview
Seminar Internet-Technologien Thema: CGI / Michael Gründler
1
Seminar Internet TechnologienSS 98
Vortrag:
Common Gateway Interface
gehalten von: Michael Gründler
Seminar Internet-Technologien Thema: CGI / Michael Gründler
2
CGI Gliederung Teil I
• Motivation / Was ist CGI
• Funktionsweise
• Die Schnittstelle
• CGI-Sprachen
• Vom Client zum Server
– Exkurs nach HTML-Forms
– Die Methoden Get und Post
– Übergabe und Kodierung
Seminar Internet-Technologien Thema: CGI / Michael Gründler
3
CGI Gliederung Teil II
• Vom Server zum Client
– Dekodierung der Eingabedaten
– Umgebungsvariablen
– Erzeugung von HTML Dokumenten
– Header
• Versteckte Felder und Cookies
• Sicherheitsaspekte
• Abschließende Bemerkungen
• Quellen
Seminar Internet-Technologien Thema: CGI / Michael Gründler
4
Motivation
• CGI ermöglicht:
– Zugriffszähler
– Gästebücher
– Datenbankabfragen
– Animation
– Formularabfragen
– Online-Registrierungen
– Realisierung von Suchmaschinen...
Seminar Internet-Technologien Thema: CGI / Michael Gründler
5
Was ist CGI ?
• Common Gateway Interface (Allgemeine Vermittlungsrechner-Schnittstelle)
• aktuelle Version CGI/1.1
• Übertragung mittels HTTP Protokoll
• ermöglicht dynamisch HTML-Dokumente zu erstellen
• ermöglicht externe Programme aus HTML Dokumenten heraus zu starten
• dient als Gateway für z.B. Datenbanken
Seminar Internet-Technologien Thema: CGI / Michael Gründler
6
Funktionsweise vom CGI
Seminar Internet-Technologien Thema: CGI / Michael Gründler
7
Die Schnittstelle
• WWW-Server muß CGI unterstützen
• Verzeichnis festlegen, meist cgi-bin
• Benutzer muß Berechtigung haben, CGI-Programme auszuführen
• CGI ist sprachunabhängig
• Folgende Bedingungen müssen erfüllt sein:
– Lesen von Standard in
– Schreiben auf Standard out
– Zugriff auf Umgebungsvariablen muß möglich sein
Seminar Internet-Technologien Thema: CGI / Michael Gründler
8
CGI Sprachen
• Alle Sprachen möglich, die die 3 Bedingungen erfüllen
• Perl oft benutzt
– Interpretersprache
– kann gut mit regulären Ausdrücken umgehen
– bietet gute und einfache Möglichkeiten der Textmanipulation
– ist noch frei erhältlich
• auch C, C++, TCL, Basic...
Seminar Internet-Technologien Thema: CGI / Michael Gründler
9
Exkurs nach HTML-FORMS I
• Formulare erstellen mit HTML-FORMS• <FORM ACTION ="/cgi-bin/programm.pl" METHOD ="POST">
leitet ein Formular ein• <INPUT TYPE ="TEXT" NAME="name" VALUE ="value"
SIZE ="size"> erstellt ein Textfeld
• Scroll-Listen
• Radiobuttons
• Checkbox
• Menues
Seminar Internet-Technologien Thema: CGI / Michael Gründler
10
Beispiel HTML-FORMS
Seminar Internet-Technologien Thema: CGI / Michael Gründler
11
Exkurs nach HTML-FORMS II
• Submit Button Absende Button
• Reset-Button "Lösch" Button
• </FORM> beendet Formular
Seminar Internet-Technologien Thema: CGI / Michael Gründler
12
Die Methoden GET und POST• GET
– Eingabedaten werden an die URL herangehängt
– Server übermittelt Daten an QUERY_STRING
• Vorteil
– nicht unbedingt Formular erstellen
– schneller als POST
• Nachteil
– Lesbarkeit der URL leidet
– zu lange Anfragestrings werden von manchen Browsern abgeschnitten werden
Seminar Internet-Technologien Thema: CGI / Michael Gründler
13
Die Methoden GET und POST
• POST
– Anfragedaten werden nicht transparent übertragen, sondern über die Standardeingabe
• Vorteil
– Eingabedaten können beliebig lang sein
• Nachteil
– URL kann nicht als Bookmark gespeichert werden
Seminar Internet-Technologien Thema: CGI / Michael Gründler
14
Übergabe und Kodierung
• Bildung von KEY/VALUE - Paaren
• Paare werden durch & voneinander getrennt
• KEY und VALUE werden durch = voneinander getrennt
• Leerzeichen werden durch + ersetzt
• Umlaute, Sonderzeichen durch hexadezimalen ASCII Code ersetzt, % dient als Kennung
• Beispiel:– vorname=Michael+J%FCrgen&nachname=Gr%FCndler
Seminar Internet-Technologien Thema: CGI / Michael Gründler
15
Dekodierung der Eingabedaten
• Lese REQUEST_METHOD, und ermittle das Request-Protokoll (Post oder Get)
• Bei "Get" QUERY_STRING auslesen
• Bei "Post" CONTENT_LENGTH auslesen und Anzahl Zeichen von STD IN lesen
• QUERY_STRING bei "&" zerlegen, separiert die Key/Value Paare
• Hexadezimal- und Pluszeichen dekodieren
Seminar Internet-Technologien Thema: CGI / Michael Gründler
16
Umgebungsvariablen
• WWW-Server stellt Umgebungsvariablen zur Verfügung
• Client übergibt Informationen an Server, der schreibt sie in die Umgebungsvariablen
• CGI- Programme müssen darauf zugreifen können
• Nicht alle werden benutzt, oder unterstützt
Seminar Internet-Technologien Thema: CGI / Michael Gründler
17
Umgebungsvariablen
Variable Beschreibung
REQUEST_METHOD GET oder POST
QUERY_STRING String der Abfragedaten, wird mit ? an URLgehängt
CONTENT_TYPE Der MIME-TYP der Abfrage, etwa"text/html"
CONTENT_LENGTH Die Länge der Daten in Byte die überStdin übergeben werden
HTTP_ACCEPT Liste der MIME-Typen die Client akzeptiert
HTTP_REFERER URL, die vor dem CGI aufgerufen wurde
Seminar Internet-Technologien Thema: CGI / Michael Gründler
18
Ausgabe vom CGI
• Grundlegende Ausgabe:
– Text oder HTML Dokument
• aber auch
– Grafik oder Binärdatei
– Anweisung: Virtuelles Dokument in Cache aufnehmen
– HTTP Statuskodes an Browser senden
– Server anweisen, ein vorhandenes Dokument zu senden
Seminar Internet-Technologien Thema: CGI / Michael Gründler
19
Erzeugung von HTML-Dokumenten
• CGI Programm schreibt Ausgabe auf Standard-Ausgabe• Server leitet alles von Standard Ausgabe zum Client
(Browser)• Beispiel in Perl
– #!/usr/local/bin/perl– print "CONTENT_TYPE: text/html", "\n\n";– print"<HTML>","\n;– print"<HEAD><TITLE>Erstes Mal</TITLE></HEAD>", "\n";– print"<BODY><H1>...</H1>","\n";– print"</BODY></HTML>", "\n";– exit(0)
Seminar Internet-Technologien Thema: CGI / Michael Gründler
20
Header
• Header, damit Client mit Dokument umgehen kann
• Header in beliebiger Reihenfolge
• Wichtig: Header mit Leerzeile abschließen!
• Vollständige und unvollständige Header
• WWW-Server vervollständigt Header
• Wenn CGI einen vollständigen Header erstellt, dann präfix nph (Non Parsed Header) vor CGI-Programm, sendet direkt zum Client
– Vorsicht: Server kann Header nicht mehr korrigieren!
Seminar Internet-Technologien Thema: CGI / Michael Gründler
21
Header
Header Beschreibung
CONTENT_LENGTH Länge des Ausgabestreamsin Byte
CONTENT_TYPE Der MIME-Typ desAusgabe-streams
STATUS Status (kann nicht als Teileines vollständigenHeaders gesendet werden)
PRAGMA Schaltet das Caching einund aus
Seminar Internet-Technologien Thema: CGI / Michael Gründler
22
Versteckte Felder und Cookies
• Komplexe Dialoge mit mehreren Formularen erfordert Speicherung von Informationen
• unterschiedliche Strategien
– versteckte Felder:
• Informationen werden transparent für Benutzer im Formular gespeichert, - Formulare werden immer länger
– Persistent Cookies
• Datei auf Client-Seite, Anzahl und Größe ist beschränkt
Seminar Internet-Technologien Thema: CGI / Michael Gründler
23
Sicherheitsaspekte
• Niemals Benutzereingaben ungeprüft auf Betriebssystemebene senden– print ´$QUERY_STRING´;
– rm -fr /
• CGI-Programme laufen meist unter root Rechte, da Ports unter 1024 root-Rechte benötigen. – Besser "Wrapper" benutzen. Durch Wrapper können Server und
Programme mit beliebiger Kennung mit eingeschränkten Rechten betrieben werden
• Keine Passwortabfrage möglich, als Tag enthalten, aber unverschlüsselte Übertragung
Seminar Internet-Technologien Thema: CGI / Michael Gründler
24
Abschließende Bemerkungen
• Kommerzielle Anbieter:– ISAPI von Microsoft– NSAPI von Netscape– FastCGI, baut auf CGI auf– Datenbankanbindung über erweiterte HTML-
Sprachen (SELECT,...)– Client-seitige Vorverarbeitung von
Eingabedaten durch Java-Script
Seminar Internet-Technologien Thema: CGI / Michael Gründler
25
Literatur, Quellen
• CGI Programmierung im World Wide Web von Shishir Gundavaram, O´Reilly International Thomson Verlag
• Offizielle CGI Spezifikation:– http://hoohoo.ncsa.uiuc.edu/cgi/interface.html
• SelfHTML 6.1 HTML Dateien selbst erstellen von Stefan Münz
• unter beliebiger Suchmaschine Suchstring "CGI" oder CGI-Programmierung" eingeben.