25
Seminar Internet-Technolo gien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael Gründler

Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

Embed Size (px)

Citation preview

Page 1: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

Seminar Internet-Technologien Thema: CGI / Michael Gründler

1

Seminar Internet TechnologienSS 98

Vortrag:

Common Gateway Interface

gehalten von: Michael Gründler

Page 2: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 3: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 4: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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...

Page 5: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 6: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

Seminar Internet-Technologien Thema: CGI / Michael Gründler

6

Funktionsweise vom CGI

Page 7: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 8: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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...

Page 9: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 10: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

Seminar Internet-Technologien Thema: CGI / Michael Gründler

10

Beispiel HTML-FORMS

Page 11: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 12: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 13: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 14: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 15: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 16: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 17: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 18: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 19: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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)

Page 20: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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!

Page 21: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 22: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 23: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 24: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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

Page 25: Seminar Internet-Technologien Thema: CGI / Michael Gründler 1 Seminar Internet Technologien SS 98 Vortrag: Common Gateway Interface gehalten von: Michael

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.