Perl-Praxis CGI-Skripte 0-0/22



Ähnliche Dokumente
Perl-Praxis. CGI-Skripte. Jörn Clausen

Perl-Praxis. CGI-Skripte. Jörn Clausen Jens Reeder, Jan Krüger

Perl-Praxis. CGI-Skripte. Madis Rumming, Jan Krüger.

Perl-Praxis. CGI-Skripte.

Perl-Praxis. CGI-Skripte. Michael Beckstette Martin Mann, Steffen Heyne.

Perl-Praxis. CGI-Skripte. Jörn Clausen Jens Reeder, Jan Krüger.

Perl-Praxis. CGI-Skripte.

Einführung in Perl. WWW, Teil 3: CGI-Skripte

Python CGI-Skripte erstellen

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Aufgaben HTML Formulare. Prof. Dr. rer. nat. Claus Brell, Wirtschaftsinformatik, Statistik

7. TCP-IP Modell als Rollenspiel

Java Webentwicklung (mit JSP)

Anwendungsprotokolle: HTTP, POP, SMTP

Wie funktioniert das WWW? Sicher im WWW

5. Übung: PHP-Grundlagen

Programmieren 2 (Prof. Hasbargen) Klausur

Proseminar: Website-Management-Systeme

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Web Grundlagen zum Spidering

Einführung in die Scriptsprache PHP

SSO-Schnittstelle. Inhalt: Beschreibung der Single Sign-On (SSO) Schnittstelle. NetSlave GmbH Simon-Dach-Straße 12 D Berlin

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

PHP-Schwachstellen und deren Ausnutzung

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

Kennen, können, beherrschen lernen was gebraucht wird

Dokumentation zum Spielserver der Software Challenge

Web Visu Tutorial. Hipecs Web Visu. Übersicht

Informatik I: Einführung in die Programmierung

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Programmers Manual Geodaten Ver. 2.0

Multimedia im Netz Wintersemester 2011/12

Faktura. IT.S FAIR Faktura. Handbuch. Dauner Str.12, D Mönchengladbach, Hotline: 0900/ (1,30 /Min)

HTML5. Wie funktioniert HTML5? Tags: Attribute:

4. Network Interfaces Welches verwenden? 5. Anwendung : Laden einer einfachen Internetseite 6. Kapselung von Paketen

PPS-Design einer eigenen WWW-Homepage WS 2002/2003. Anforderungen an eine Webseite

HTML Formulare. Benutzerschnittstelle für interaktive Webseiten

Schiller-Gymnasium Hof

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

JSP Usereingabe. Inhalt. 1 Zielsetzung. SEW(3.Jg) Unterlagen zu Java Server-Pages Teil 2

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

PHP JavaScript Kapitel 9. Java-Script-Objekte und das Event-Modell

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Zusatzfunktionen am Xcome

Session Management und Cookies

PHP Einsteiger Tutorial Kapitel 4: Ein Kontaktformular in PHP Version 1.0 letzte Änderung:

Funktionen in PHP 1/7

HTML Teil 2. So kann man HTML-Seiten mit <div> und CSS gestalten. So sehen einfache Formulare aus

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Autoresponder Unlimited 2.0

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

«Integration in WebSite» HTML-/Javascript-Code-Beispiele

Kommunikationsnetze. 7. Das World Wide Web 7.4 Client- vs. Server-basierte Techniken für dynamische Webseiten

Dokumentation Externe Anzeige von Evento Web Dialogen

Programmierkurs Java

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

OP-LOG

Password Depot für ios

Vitaminkapseln.ch - SEO Check

Berufsakademie Stuttgart, Außenstelle Horb, MI2002

FileMaker und PHP Workshop

Online-Publishing mit HTML und CSS für Einsteigerinnen

RESTful Web. Representational State Transfer

Logging, Threaded Server

TELIS FINANZ Login App

Themen. Apache Webserver Konfiguration. Verzeichnisse für Web-Applikationen. Server Side Includes

Hyperlinks, Navigation, Pfade

DIE ZUKUNFT BEGINNT JETZT: ELEKTRONISCHE UNTERSCHRIFT

Typo3 - Schulung: Fortgeschrittene I an der Hochschule Emden/Leer

Adressen der BA Leipzig

Datenbank-basierte Webserver

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Überblick. Netzprogrammierung 7b. Zustand in Web Anwendungen. Zustand in HTTP HTTP ist zustandslos Zwei Interaktionen sind unabhängig voneinander

3 Wie bekommen Sie Passwortlevel 3 und einen Installateurscode?

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Eine Anwendung mit InstantRails 1.7

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

Lokale Installation von DotNetNuke 4 ohne IIS

LIP Formulare Anleitung zum Speichern, Öffnen und Drucken

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Geoproxy Freistaat Thüringen

Standard-Kontaktformular

Webalizer HOWTO. Stand:

1 Überblick. A-Z SiteReader Benachrichtigung.doc Seite 1 von 9

Synchronisations- Assistent

Lizenzen auschecken. Was ist zu tun?

Text Link Werbung

Registrierung für eine Senioren IPIN Ab 17. Mai 2011 können sich Spieler für eine Senioren IPIN (Lizenz) registrieren.

Schulung SWBcontent. Stand

Online-Sendungsverfolgung. Morgenpost Briefservice GmbH

Python SVN-Revision 12

Java zur Realisierung von Internetanwendungen

SSL-geschützte Verbindungen mit dem "Internet Information Server" (IIS) unter Windows Server 2003

Transkript:

q Perl-Praxis CGI-Skripte 0-0/22

Perl-Praxis CGI-Skripte Jörn Clausen, Jan Krüger Jens Reeder, Alex Sczyrba AG Praktische Informatik Technische Fakultät Universität Bielefeld {asczyrba,jkrueger}@techfak.uni-bielefeld.de

Übersicht WWW, Web-Server CGI-Skripte Parameterübergabe Web-Formulare CGI.pm Perl-Praxis CGI-Skripte 2/22

Datenaustausch im WWW Request Client Response Server Adressierung durch Uniform Resource Locator (URL) Anfrage und Antwort werden per HTTP transportiert HTTP-Nachricht besteht aus header und body body kann leer sein Antwort kann dynamisch generiert werden Perl-Praxis CGI-Skripte 3/22

ein kleiner Web-Server Übungsverzeichnis verwenden, NICHT DAS HOMEDIRECTORY Perl-Praxis CGI-Skripte 4/22

ein kleiner Web-Server Übungsverzeichnis verwenden, NICHT DAS HOMEDIRECTORY Web-Server starten: $ /vol/lehre/perlpraxis/2008/bin/run_mini_httpd.sh -p PORT andere Port-Nummer wählen: -p... Web-Browser starten http://amerika/...).techfak.uni-bielefeld.de:port/ korrekten Rechner (amerika/...), korrekte Port-Nummer Datei index.html auswählen Perl-Praxis CGI-Skripte 4/22

CGI-Skripte informeller Standard: Common Gateway Interface Web-Server führt externes Programm aus Ausgabe des Programms wird als Antwort zurückgeschickt enormes Gefahrenpotential: Ausführung von (fehlerhaftem?) Code Ausführung von beliebigem Code eigenen Code sorgfältig prüfen Perl-Praxis CGI-Skripte 5/22

CGI-Skripte informeller Standard: Common Gateway Interface Web-Server führt externes Programm aus Ausgabe des Programms wird als Antwort zurückgeschickt enormes Gefahrenpotential: Ausführung von (fehlerhaftem?) Code Ausführung von beliebigem Code eigenen Code sorgfältig prüfen Keine schnellen Hacks!! Perl-Praxis CGI-Skripte 5/22

Aufbau einer Antwort: header, Leerzeile, body Content-Type: text/html CGI-Skripte, cont. <html> <head>... Perl-Skript helloworld.cgi: #!/vol/perl-5.8/bin/perl print "Content-Type: text/plain\n\n"; print "hello world!\n"; http://vino.techfak...:8088/helloworld.cgi Perl-Interpreter direkt angeben, nicht mit /usr/bin/env Perl-Praxis CGI-Skripte 6/22

Aufgaben Schreibe ein CGI-Skript, das die aktuelle Uhrzeit zurückliefert. Zur Erinnerung: ($sec, $min, $hour) = localtime(time()); Perl-Praxis CGI-Skripte 7/22

redirects Skript verweist auf andere Ressource neuer URL wird im header zurückgeliefert print "Location: http://www.uni-bielefeld.de\n\n"; body kann leer sein redirect verfolgen: $ GET -S http://amerika.techfak...:xxxx/redirect.cgi more GET http://amerika.techfak...:xxxx/redirect.cgi --> 302 Found GET http://www.uni-bielefeld.de --> 200 OK <!DOCTYPE html PUBLIC... 302 und 200 Status Codes von HTTP Perl-Praxis CGI-Skripte 8/22

Parameterübergabe Anfrage kann Daten enthalten (Google, Amazon, Wikipedia,... ) Schlüssel-Wert-Paare Datentransfer vom Client zum Web-Server: GET: Parameter werden im URL kodiert...google.de/search?q=boggit&ie=utf-8&oe=utf-8&... POST: Daten werden im body transportiert Datentransfer vom Web-Server zum CGI-Skript: Environment STDIN Perl-Praxis CGI-Skripte 9/22

Einschub: Environment Environment-Variablen mit Shell-Kommando env ansehen Zugriff in Perl: Hash %ENV print "User: $ENV{USER}\n"; print "Suchpfad: $ENV{PATH}\n"; schreibender Zugriff möglich Environment an Prozess gebunden Perl-Praxis CGI-Skripte 10/22

Aufgaben Schreibe ein CGI-Skript showenv.cgi, das das gesamte Environment des CGI-Prozesses anzeigt. Wie sieht das Environment aus, wenn Du showenv.cgi auf der Kommandozeile aufrufst? Hänge an den URL Parameter an:.../showenv.cgi?query=boggit Wie verändert sich das Environment? Gib mehrere Parameter an. Wie könntest Du diese Parameterliste mit Perl weiterverarbeiten? Perl-Praxis CGI-Skripte 11/22

Öffne die Datei form.html mit dem Web-Browser <form action="showenv.cgi" method="get"> Anfrage: <input type="text" name="query"> <br> <input type="submit"> <input type="reset"> </form> Daten werden an showenv.cgi übergeben Methode GET, d.h. Parameter erscheinen im URL Eingabe testen: Ernie & Bert ersetze in form.html Methode GET durch POST Web-Formulare Perl-Praxis CGI-Skripte 12/22

Auswertung von Web-Formularen immer wiederkehrende Aufgaben/Probleme: Daten können auf verschiedene Arten übertragen werden spezielle Zeichen müssen (de)kodiert werden Antwort muß korrekten header und body enthalten Eingaben müssen vorsichtig ausgewertet werden universeller Helfer: CGI.pm Perl-Praxis CGI-Skripte 13/22

CGI.pm verwenden nochmal aktuelle Uhrzeit: use CGI; my ($sec, $min, $hour) = localtime(time()); my $query=cgi->new; print $query->header("text/plain"); print "It is $hour:$min:$sec\n"; weitere Informationen im header: print $query->header(-type => "text/html", -expires => "+3h"); redirect: print $query->redirect("http://www.uni-bielefeld.de"); Perl-Praxis CGI-Skripte 14/22

Aufgaben Schreibe mit Hilfe von CGI.pm ein CGI-Skript, das per Zufall einen redirect auf eine der folgenden Webseiten erzeugt: http://www.google.de/ http://elgoog.rb-hosting.de/ http://www.blug.linux.no/rfc1149/ Perl-Praxis CGI-Skripte 15/22

HTML mit CGI.pm erzeugen korrektes HTML, vor allem korrekte Tag-Klammerung: use CGI ":standard"; print header("text/html"), start_html("perl-praxis"), h1("html mit CGI.pm"), p("cgi, das Common Gateway Interface..."), end_html; Import von Symbolnamen bei use prozedurale Verwendung von CGI.pm Perl-Praxis CGI-Skripte 16/22

Aufgaben Ändere das Skript zur Anzeige der aktuellen Uhrzeit so ab, daß mit Hilfe von CGI.pm HTML-Code erzeugt wird. Sieh Dir mit $ HEAD -e http://amerika.techfak...:xxxx/clock.cgi den header der Antwort an. Sorge dafür, daß die Antwort 10 Sekunden lang im Cache gehalten werden darf. Wie ändert sich der header? Was passiert, wenn Du im Location Bar des Browsers Return drückst? Was passiert, wenn Du die Reload -Funktion des Browsers verwendest? Perl-Praxis CGI-Skripte 17/22

Formulare mit CGI.pm erzeugen weitere Eingabemöglichkeiten (formcgi.cgi): print start_form, textfield(-name => "name", -default => "Joe User"), popup_menu(-name => "age", -values => ["-17","18-25","25-35","36+"], -default => "25-35"), scrolling_list(-name => "languages", -values => ["Perl","Java","Haskell"], -default => ["Java","Haskell"], -multiple => "true"), br, submit, reset, end_form; Was passiert beim submit? Sieh Dir den (HTML-)Quelltext der Seite an. Perl-Praxis CGI-Skripte 18/22

Parameterübergabe Skript showparams.cgi: my $query=cgi->new; print $query->header("text/plain"); foreach $name ($query->param) { my $val = $query->param($name); print "$name: $val\n"; } probiere URL.../showparams.cgi?query=boggit&answers=10 trage showparams.cgi als action in form.html ein probiere GET und POST als method Perl-Praxis CGI-Skripte 19/22

iterative CGI-Skripte häufig Dialog von Fragen und Antworten komplexere Formulare, Shop-Systeme Zustand muß gespeichert werden ein CGI-Skript mit versteckten Status-Informationen leicht zu überlisten andere (bessere?) Verfahren: Cookies, Session-ID,... Perl-Praxis CGI-Skripte 20/22

Mail-Order-Animals: animal.cgi iterative CGI-Skripte, cont. my $animal = $query->param("animal"); my $color = $query->param("color"); if (!($animal and $color)) { print start_form; if (!$animal) { print "animal: ", textfield(-name => "animal", -default => "tiger"); } elsif (!$color) { print "animal: $animal",br, "color: ", textfield(-name => "color", -default => "yellow"), hidden(-name => "animal"); } print end_form; } else { print p("so you want a $color $animal"); } Perl-Praxis CGI-Skripte 21/22

Aufgaben Schreibe ein CGI-Skript, das folgende Informationen abfragt: Name Textfeld Alter Textfeld optional EMail Textfeld Studiengang NWI / MGS / BIG optional Wiederhole die Eingabe solange, bis alle verpflichtenden Angaben (Name und EMail-Adresse) eingegeben wurden. Implementiere weitere Tests: Das Alter muß eine Zahl zwischen 0 und 120 sein. Die EMail-Adresse muß glaubhaft aussehen, also z.b. ein at-zeichen @ enthalten. Perl-Praxis CGI-Skripte 22/22