eCommerce Systeme - Institut für Informatik - Christian-Albrechts ...
eCommerce Systeme - Institut für Informatik - Christian-Albrechts ...
eCommerce Systeme - Institut für Informatik - Christian-Albrechts ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Arbeitsgruppe Angewandte <strong>Informatik</strong> (Wirtschaftsinformatik)<br />
Vorlesung: Andreas Speck<br />
Übungen: Sven Feja<br />
<strong>Christian</strong>-<strong>Albrechts</strong>-Universität zu Kiel<br />
<strong>Institut</strong> <strong>für</strong> <strong>Informatik</strong><br />
Raum 404a / 403, Hermann-Rodewald-Str. 3, D-23118 Kiel<br />
Email: andreas.speck@email.uni-kiel.de<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 1 <strong>eCommerce</strong> Sommersemester 2008
Gliederung<br />
1 Einführung<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
3 Wirtschaftliche Konzepte<br />
4 Web Shop <strong>Systeme</strong><br />
5 Hochleistungs-<strong>eCommerce</strong> <strong>Systeme</strong><br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 2 <strong>eCommerce</strong> Sommersemester 2008
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Gliederung Einführung<br />
2 Grundlagen<br />
2.1 Protokolle (1)<br />
2.2 Unterstützung durch Betriebssystem<br />
2.3 Protokolle (2)<br />
2.4 Programmierung<br />
2.5 Datenpräsentation<br />
2.6 Sicherheit<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 3 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Netzwerke werden durch geschichtete Protokolle beschrieben:<br />
Protokoll-Stack<br />
Application Layer<br />
Internet Layer<br />
Network Layer<br />
Internet Application<br />
TCP / IP<br />
Network Technology<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 4 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Beispiele <strong>für</strong> Protokolle auf der Applikationsschicht:<br />
Application Layer<br />
Internet Layer<br />
Network Layer<br />
HTTP FTP Telnet SSH<br />
TCP / IP<br />
Network Technology<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 5 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Warum werden Protokolle geschichtet?<br />
aus [Tan1997]:<br />
A layer should be created where a different level of abstraction is needed.<br />
Each layer should perform a well defined function.<br />
The function of each layer should be chosen with an eye toward defining<br />
internationally standardized protocols.<br />
The layer boundaries should be chosen to minimize the information flow across<br />
the interface.<br />
The number of layers should be large enough that distinct functions need not to<br />
be thrown together in the same layer out of necessity, and small enough that the<br />
architecture does not become unwieldy.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 6 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Vergleich mit dem<br />
Referenzmodell<br />
<strong>für</strong> Netzwerk-<br />
kommunikation:<br />
Open System<br />
Interconnection<br />
Reference Model (OSI)<br />
of International Standards<br />
Organization (ISO)<br />
Application<br />
Presentation<br />
Session<br />
Transport<br />
Network<br />
Data Link<br />
Physical<br />
Application Protocol<br />
Presentation Protocol<br />
Session Protocol<br />
Transport Protocol<br />
Network Protocol<br />
Data Link Protocol<br />
Physical Protocol<br />
Physical Network (Cable)<br />
Application<br />
Presentation<br />
Session<br />
Transport<br />
Network<br />
Data Link<br />
Physical<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 7 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Grundsätzliche Konzepte eines Referenzmodells:<br />
Ist eine reine Referenz, die angibt:<br />
- welche Dienste vorkommen müssen oder können<br />
- auf welcher Ebene die Dienste angeordnet sind<br />
- welche Dienste miteinander interagieren<br />
Reale Netzwerke<br />
- können die Anzahl der Dienste ändern (meist verringern),<br />
- können die Dienste auf anderen Ebenen anordnen<br />
- und können die Anzahl der Ebenen ändern (meist verringern).<br />
z.B. TCP / IP (4 Ebenen), CAN (2 oder 3 Ebenen)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 8 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Grundsätzliche Konzepte: Peer to Peer Kommunikation<br />
- Dienste auf einer spezifischen Ebene werden als Peers bezeichnet<br />
- diese Dienste kooperieren miteinander<br />
- die jeweils unterlagerten Dienstebenen sind Abstraktionen der<br />
Netzkommunikation<br />
Aufruf<br />
unterlagerter<br />
Dienste<br />
Einpacken<br />
der Daten<br />
Versenden<br />
über Netzwerk<br />
Aufruf<br />
unterlagerter<br />
Dienste<br />
Austausch von<br />
Rechner zu Rechner<br />
kooperierende<br />
Algorithmen<br />
weiterreichen<br />
über Netzwerk<br />
Verbindung<br />
zwischen zwei<br />
Rechnern<br />
Auspacken<br />
der Daten Aufruf<br />
durch unterlagerte<br />
Dienste<br />
Empfangen<br />
über Netzwerk<br />
Aufruf<br />
durch unterlagerte<br />
Austausch von<br />
Rechner zu Rechner<br />
Dienste<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 9 <strong>eCommerce</strong> Sommersemester 2008
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Netzwerkverbindungen:<br />
Repeater Bridge<br />
(Protokollumwandlung)<br />
Router<br />
(Anpassung<br />
unterschiedlicher<br />
Netzwerke)<br />
Gateway<br />
(vollständige<br />
Umsetzung)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 10 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Genauere Betrachtung einzelner Dienste:<br />
Data Link und Physical: schematisches Modell einer Nachricht<br />
Begin Header (ID) Frame Number DATA Checksum End<br />
Begin: Erkennung, dass eine Nachricht folgt<br />
Header (ID): Adresse des Empfängers, z.T. auch Priorität der Nachricht<br />
Frame Number: Ist die Nachricht Teil eines größeren Datenpakets (Frame),<br />
so wird hier die Nummer der Nachricht innerhalb des Pakets<br />
angegeben (Frame 47, Message 11)<br />
DATA: die Daten, Nutzinformation<br />
Checksum: Maßnahme zur Prüfung der Korrektheit der Nachricht.<br />
Die vorausberechnete Check-Summe, die vom Sender<br />
mitgegeben wurde, muss auch vom Empfänger so berechnet<br />
werden.<br />
End: Erkennung, dass die Nachricht beendet ist<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 11 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Typisches TCP/IP Ebene 2 Protokoll: Ethernet<br />
Zur Erinnerung der Aufbau eines Ethernet-Pakets:<br />
Präambel 8 Bytes Synchronisation<br />
Empfänger 6 Bytes Adresse (11…1 ⇒ Broadcast)<br />
Sender 6 Bytes Adresse<br />
Protokoll 2 Bytes realisiertes Protokoll (z.B. IP)<br />
Daten < 1,5 kBytes nach Abzug der Header höherer Protokollschichten<br />
bleiben ca. 1 kBytes Nutzdaten<br />
Prüfsumme 4 Bytes CRC<br />
Paketlänge ist Kompromiss zwischen Overhead der Verpackung<br />
und Kollisionsgefahr.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 12 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.1 Protokolle (1)<br />
Fehler bei der Übertragung von Daten (Schicht 2 Protokolle)<br />
Ursachen des Verfälschen:<br />
Rauschen, Übersprechen, Echos, elektromagnetische Störimpulse (Bursts)<br />
Störimpuls von 10 ms bei Übertragungsrate 2400 Bit/s ⇒ Burst von 24 Bit<br />
Fehlererkennung redundante Kodierung:<br />
- Fehlererkennende Codes (Error-detecting Code),<br />
ARQ (automatic Repeat Request), d.h. Fehler erkannt ⇒ Wiederholung<br />
- Fehlerkorrigierende Codes (Error-correcting Code)<br />
FEC (Forward Error Correction), geeignete Redundanz ermöglicht<br />
Fehlerkorrektur (z.B. bei Hauptspeicher)<br />
weitere Möglichkeit: Echoverfahren (Zeichen wird reflektiert und damit vom<br />
Sender geprüft)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 13 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.1 Protokolle (1)<br />
TCP / IP Protokoll<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Einordnung realer Dienste wie<br />
TCP und IP gegenüber der im<br />
OSI Modell standardisierten<br />
Dienste<br />
TCP/IP:<br />
TCP = Transmission Control Protocol<br />
IP = Internet Protocol<br />
Telnet, FTP,<br />
SMTP, HTTP, ...<br />
TCP Transmission<br />
Control Protocol<br />
IP Protocol<br />
Ethernet, ATM, ...<br />
Copper, Fiber<br />
Application<br />
Presentation<br />
Session<br />
Transport<br />
Network<br />
Data Link<br />
Physical<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 14 <strong>eCommerce</strong> Sommersemester 2008<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wozu werden Betriebssysteme benötigt?<br />
Beispiele <strong>für</strong> Rechnersysteme:<br />
1. Controller:<br />
eine einfache Aufgabe, ein Prozess, wenige eingebaute Geräte<br />
(Embedded Devices), meist selbst ein Embedded Device<br />
2. PC oder Workstation:<br />
multifunktional und variabel einsetzbar, mehrere periphere<br />
(und austauschbare) Geräte<br />
mehrere Benutzer mit z.T. unterschiedlichen Rechten,<br />
mehrere Prozesse<br />
3. Maschinensteuerung:<br />
eigentlich Mischung aus 1. und 2.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 15 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Was leisten Betriebssysteme?<br />
Beispiele <strong>für</strong> Rechnersysteme:<br />
Verwaltung von Prozessen<br />
Verwaltung von Benutzern<br />
Verwaltung von Dateien<br />
allgemein: Verwaltung von Ressourcen<br />
Ansteuerung von (peripheren) Geräten<br />
Austausch zwischen Geräten und den Prozessen der Benutzer<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 16 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Aus was besteht ein Betriebssystem?<br />
Kern des Betriebssystems (Kernel):<br />
• absolute Basisfunktionalität (z.B. Scheduling, Verwaltung von Zugriffen,<br />
bzw. Anfragen)<br />
• Basismodule als Zusatz zum Kern<br />
• Treiber, z.B. Gerätetreiber<br />
• Hilfsprogramme (siehe Abschnitt 1.2)<br />
Achtung: ähnlich wie Kernzugriffe (Kernel Traps) aber nicht gleich,<br />
sondern nur ausprogrammierte Kernel Traps<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 17 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
Kernel Trap<br />
Prozess<br />
z.B. Browser<br />
Zugriff auf Web Server<br />
Kernel<br />
Trap<br />
Kernel<br />
Shell<br />
Treiberprozess<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 18 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
erstes ganz einfaches Beispiel: C Programm „MyNumer.c“<br />
Was ist das?<br />
„normaler“ Programm-Code<br />
}<br />
Kernel Trap:<br />
Ausdruck auf Bildschirm<br />
⇒ Zugriff auf das Gerät Grafikkarte<br />
#include <br />
void main() {<br />
int i = 99;<br />
i = i + 1;<br />
printf(„Hello my number is: %i \n“, i);<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 19 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
C Compilation: C Programm „gcc –o myNumber MyNumer.c“<br />
Einzug eines<br />
Header-Files<br />
#include <br />
(Zugriffsschnittstellenbeschribung)<br />
void main() {<br />
„normaler“ Compilation int i = 99;<br />
Umwandlung zu<br />
i = i + 1;<br />
Maschinen-Code<br />
printf(„Hello my number is: %i \n“, i);<br />
}<br />
Kernel Trap:<br />
auch Systemaufruf genannt<br />
Einbinden von Bibliotheks-Code<br />
⇒ führt die Interaktion mit Kernel aus<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 20 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
Zugriff über einen Systemaufruf (d.h. Kernel Trap)<br />
Was muss bei einem Systemaufruf beachtet werden?<br />
• Kenntnis der Bezeichnung des Aufrufs<br />
• Signatur des Aufrufs:<br />
- Eingangsparameter und deren Bedeutung<br />
- Rückgabeparameter<br />
• eventuell weitere abhängige Aufrufe<br />
Dieses Verfahren wird auch von anderen Programmiersprachen<br />
so nachempfunden (Java, PHP, usw.)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 21 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
Zugriff über Gerätetreiber (Device Drivers)<br />
• Treiber ist Teil des Bibliotheks-Code<br />
• Treiber ist Geräte-abhängig:<br />
zum Anwendungsprogramm wird eine standardisierte Schnittstelle<br />
verwendet;<br />
zum Geräte Controller hin Geräte-spezifisch<br />
• Treiber werden meist vom Gerätehersteller zur Verfügung gestellt<br />
Call Call Call<br />
Anwendungsprogramm Device Driver Device Controller Device<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 22 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Wie kann auf Geräte über das Betriebssystem zugegriffen werden?<br />
Grobstruktur der Gerätetreiber (Device Drivers)<br />
vom<br />
Anwendungsprogramm<br />
zum<br />
Anwendungsprogramm<br />
eingehender Systemaufruf<br />
Parameteraufbereitung<br />
Parameter aufgreifen,<br />
zerlegen<br />
in EA-Register ablegen<br />
Geräteaufruf von System<br />
Geräteantwort an System<br />
Verlaufsanalyse<br />
Rücksprung von Systemaufruf<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 23 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Hilfs-Programme zum Zugriff aus UNIX / Linux<br />
Zugriff über Console, z.B. xterm mit einer Command Shell, (z.B. bash)<br />
Grundstruktur der UNIX Aufrufe:<br />
xterm –sb –bg yellow &<br />
aufgerufenes Parameter unabhängiger<br />
Programm Kindprozess<br />
Hilfe und Dokumentation:<br />
xterm –-help oder xterm –h oder man xterm<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 24 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Hilfs-Programme zum Zugriff aus UNIX / Linux<br />
Zugriff über Console, z.B. xterm mit einer Command Shell, (z.B. bash)<br />
Grundstruktur der UNIX Aufrufe:<br />
xterm –sb –bg yellow &<br />
aufgerufenes Parameter unabhängiger<br />
Programm Kindprozess<br />
Hilfe und Dokumentation:<br />
xterm –-help oder xterm –h oder man xterm<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 25 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Hilfs-Programme zum Zugriff aus UNIX / Linux<br />
Hilfsprogramme: Dateirechte<br />
<strong>für</strong> Dateien<br />
6 : lesen und schreiben<br />
4 : nur lesen<br />
7: ausführbar, lesen und schreiben<br />
5: ausführbar, nur lesen<br />
Standard:<br />
chmod 644 filename<br />
Bei Verzeichnissen gilt immer:<br />
7 lesen und schreiben,<br />
5 nur lesen<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 26 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Hilfs-Programme zum Zugriff aus UNIX / Linux<br />
Hilfsprogramme: Links auf Dateien<br />
ln stellt Links zwischen Dateien oder Verzeichnissen her<br />
entweder Hardware-Links oder symbolische Links (zu bevorzugen)<br />
Optinen: --symbolic oder -s<br />
Beispiel:<br />
ln -s jdk1.3 java<br />
ergibt:<br />
ls -l java<br />
lrwxrwxrwx 1 root root 6 Jan 18 16:34 java -> jdk1.3<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 27 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Dateisystem in UNIX / Linux<br />
Boot<br />
Block<br />
Super<br />
Block<br />
I-Nodes<br />
Data<br />
Blocks<br />
Data<br />
Blocks<br />
I-Nodes sind eine Indirektion zwischen den Datenblöcken der Datei und<br />
den Dateinamen, sie beinhalten u.a.<br />
Name, Rechte und Besitzer, Größe, Verweise auf Datenblöcke, …<br />
dabei sind I-Nodes faktisch Dateiblöcke<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 28 <strong>eCommerce</strong> Sommersemester 2008<br />
…
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Dateisystem in UNIX / Linux<br />
Links: Hard Link<br />
Boot<br />
Block<br />
Super<br />
Block<br />
alter Verweis<br />
I-Nodes<br />
neuer Verweis (Hard Link)<br />
Data<br />
Blocks<br />
Data<br />
Blocks<br />
Bei Hard Links wird ein Verweis auf einen (oder mehrere) Dateiblöcke<br />
„hart“ umgebogen.<br />
Vorteil: Die Dateiblöcke werden direkt – also schneller – gefunden.<br />
Nachteil: Bei Fehlern können die alten Verweise nicht mehr rekonstruiert<br />
werden<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 29 <strong>eCommerce</strong> Sommersemester 2008<br />
…
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Dateisystem in UNIX / Linux<br />
Links: Soft Link<br />
Boot<br />
Block<br />
Super<br />
Block<br />
neuer Verweis (Soft Link greift auf<br />
bestehnden I-Node zurück)<br />
alter Verweis<br />
I-Nodes<br />
Data<br />
Blocks<br />
Data<br />
Blocks<br />
Bei Soft Links wird ein Verweis auf einen anderen Verweis weitergeleitet.<br />
Nachteil: Beim Zugriff auf Datenblöcke kommt es zu einer Indirektion, d.h.<br />
Zeitverzögerung.<br />
Vorteil: Keine bestehenden Verweise und Datenblöcke gehen verloren.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 30 <strong>eCommerce</strong> Sommersemester 2008<br />
…
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Prozesse in Unix / Linux<br />
Prozesse befinden sich in verschiedenen Zuständen<br />
1<br />
(just)<br />
created<br />
2<br />
runnable<br />
5<br />
Meistens befinden sich die Prozesse im Zustand blocked.<br />
Sie warten auf ein Signal.<br />
3<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 31 <strong>eCommerce</strong> Sommersemester 2008<br />
7<br />
execute<br />
on CPU<br />
4<br />
suspended<br />
8<br />
6<br />
blocked<br />
Zombie
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Prozesse in Unix / Linux<br />
Prozesse<br />
besitzen einen Prozesskontrollblock (Process Control Block, PCB)<br />
mit wichtigen Informationen über den Prozess: z.B. Besitzer, Priorität, Ort<br />
im Speicher, Zustand und Identität<br />
Die Identität wird als Process Identity (PID) bezeichnet.<br />
Anhand diese können Prozesse identifiziert werden:<br />
ps –eaf (fast) alle Prozesse, die auf dem Rechner ablaufen<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 32 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Prozesse in Unix / Linux<br />
Signale an Prozesse<br />
Prozesse sind meist blockiert und warten auf ein Signal.<br />
Beispiele:<br />
Web Server wartet auf ein Signal der Netzkarte, dass ein Zugriff von<br />
außen erfolgt.<br />
Ein Editorprozess wartet auf eine Tastatureingabe.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 33 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Prozesse in Unix / Linux<br />
Signale an Prozesse<br />
Beispiel: Web Server wartet auf ein Signal der Netzkarte, dass ein<br />
Zugriff von außen erfolgt.<br />
1<br />
Kartentreiber<br />
2 Betriebssystem<br />
3<br />
Web<br />
Server<br />
Prozess<br />
1. Netzkarte empfängt Nachricht und gibt diese an<br />
Kartentreiber<br />
2. Kartentreiber informiert Betriebssystem, dass das<br />
Signal versendet werden soll<br />
3. Betriebssystem weckt (deblockiert) Web Server<br />
Prozess auf und informiert, dass ein Signal zugestellt<br />
wurde<br />
4. Web Server Prozess schaut in Signaltabelle nach neu<br />
erhaltenem Signal<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 34 <strong>eCommerce</strong> Sommersemester 2008<br />
Signaltabelle<br />
4
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Prozesse in Unix / Linux<br />
Signale an Prozesse<br />
Manuelles Versenden von Signalen<br />
kill pid sendet ein Signal an den Prozess mit PID<br />
Beispiel:<br />
kill 99 (PID zuvor mit ps ermittelt)<br />
und wenn ein Prozess hängt, also “abgeschossen” werden muss:<br />
kill -9 1010<br />
-9 ist die Nummer des Signals, 9 = SIGKILL<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 35 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Netzwerkkommunikationsmechanismus in UNIX / Linux und<br />
weiteren Betriebssystemen (Socket)<br />
• ermöglichen den Prozessen den Zugriff auf das Netzwerk<br />
• bieten verschiedene Kommunikationsformen:<br />
- zuverlässiger verbindungsorientierter Byte-Stream<br />
- zuverlässiger, verbindungsorientierte Paketstrom (Paket-Stream)<br />
- unsichere Paketübermittlung (Paket Transmission)<br />
Sending Process Receiving Process<br />
Socket<br />
Connection<br />
Network<br />
User Space<br />
Kernel Space<br />
[A.S. Tanenbaum. Modern Operating Systems, Prentice-Hall, 1992]<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 36 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Ports<br />
Sockets sind eine Funktionalität des Betriebssystems, die von über Netzwerk<br />
kommunizierenden Prozessen genutzt werden.<br />
Dabei werden den Prozessen feste Zugriffspunkte (Ports) zugeordnet<br />
(z.B. FTP-Prozesse haben den Port 21).<br />
• Portnummern 1 bis1023 Systemprozesse oder systemnahe Prozesse<br />
• Portnummern 1024 bis 5000 werden von der Portverwaltung vergeben<br />
• Portnummern ab 5001 werden ohne Kontrolle vom Anwender vergeben<br />
Eine Verbindung wird daher charakterisiert durch:<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 37 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Grundsätzlicher Ablauf der Kommunikation über Socket<br />
hier codiert in C:<br />
Server Client<br />
socket(); /* Adr.fam,Art,Prot. */ socket();<br />
bind(); /* Adresse */<br />
listen(); /* Puffer */<br />
accept(); /* Verb.aufbau */<br />
… /* Server ist blockiert */<br />
connect();/* Verb.aufbau */<br />
read(); /* Lesen - Schreiben */ write();<br />
write(); read();<br />
… /* Server ist blockiert */<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 38 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Grundsätzlicher Ablauf der Kommunikation über Socket<br />
Alternative Realisierung in Java (Teil 1, Deklaration der Variablen):<br />
// create socket instance:<br />
Socket socket = (Socket)null;<br />
// I/O – streams:<br />
InputStream instream;<br />
OutputStream outstream;<br />
// define hostname and portnumber:<br />
String hostname = "141.35.45.222";<br />
int portnumber = 1024;<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 39 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Grundsätzlicher Ablauf der Kommunikation über Socket<br />
Alternative Realisierung in Java (Teil 2, Öffnen der Socket-Verbindung):<br />
// open socket<br />
try {<br />
if (socket == (Socket)null) {<br />
socket = new Socket (hostname, portnumber , true);<br />
System.out.println("New Socket created");<br />
// open streams for socket<br />
instream = socket.getInputStream();<br />
outstream = socket.getOutputStream();<br />
}<br />
else {System.out.println("Socket already existing"); }<br />
} catch ( IOException e ) {System.out.println("Socket Error");};<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 40 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Grundsätzlicher Ablauf der Kommunikation über Socket<br />
Alternative Realisierung in Java (Teil 3, Datenaustausch):<br />
public void communicate () throws IOException {<br />
byte b = (byte)0;<br />
b = (byte) instream.read();<br />
System.out.println("Socket has received Byte:" + b);<br />
outstream.write(b);<br />
outsream.flush();<br />
System.out.println("Socket has send Byte: " + b);<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 41 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Grundsätzlicher Ablauf der Kommunikation über Socket<br />
Alternative Realisierung in Java (Teil 4, Socket schließen):<br />
try {<br />
instream.close();<br />
outstream.close();<br />
socket.close();<br />
} catch ( IOException e )<br />
{System.out.println("Socket closed "); };<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 42 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.2 Unterstützung durch Betriebssystem<br />
Durch Socket unterstüzte Protokolle<br />
User<br />
Process<br />
User<br />
Process<br />
TCP UDP<br />
IP ARP<br />
Hardware<br />
Interface<br />
Process Layer<br />
(Application)<br />
Transport Layer<br />
Network Layer<br />
Data Link Layer<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 43 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
TCP / IP Protokollpakete<br />
reale Protokollebenen und deren alternative Dienste<br />
User<br />
Process<br />
User<br />
Process<br />
TCP UDP<br />
IP ARP<br />
Hardware<br />
Interface<br />
Process Layer<br />
(Application)<br />
Transport Layer<br />
Network Layer<br />
Data Link Layer<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 44 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Adressierung mit IP Nummer<br />
IP Nummer: beispielsweise 134.041.035.222<br />
jeweils vier Bytes (Wert 0 bis 255)<br />
• TCP sorgt da<strong>für</strong>, daß die Datenpakete „richtig“ bei<br />
der entsprechenden IP ankommen (dazu werden Sequenznummern genutzt, d.h.<br />
man erhält so die richtige Reihenfolge der Pakete sowie die notwendige Anzahl der<br />
Pakete <strong>für</strong> die Vollständigkeit der gesamten Information)<br />
• jeder Rechner, der ans Internet angeschlossen ist, hat auch eine IP-Adresse<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 45 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Klassifikation der Netzwerke anhand der IP Nummer<br />
Klasse-A-Netze<br />
Klasse-B-Netze<br />
Klasse-C-Netze<br />
http://www.arin.net/ - American Registry for Internet Numbers<br />
http://www.ripe.net/ - Réseaux IP Européens<br />
http://www.apnic.net/ - Asia Pacific Network Information Center<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 46 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Klassifikation der Netzwerke anhand der IP Nummer<br />
Klasse-A-Netze<br />
• erste Zahl einer IP-Adresse ist Netzwerknummer, alle anderen Zahlen sind<br />
Hostnummern<br />
• als Netzwerknummern solcher Netze sind Zahlen zwischen 0 und 127<br />
möglich<br />
• innerhalb eines Klasse-A-Netzes kann der entsprechende Netzbetreiber die<br />
zweite, dritte und vierte Zahl der einzelnen IP-Adressen seiner<br />
Netzteilnehmer frei vergeben<br />
• Das amerikanische Militärnetz ist beispielsweise so ein Klasse-A-Netz<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 47 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Klassifikation der Netzwerke anhand der IP Nummer<br />
Klasse-B-Netze<br />
• die beiden ersten Zahlen der IP-Adresse = Netzwerknummer<br />
• bei der ersten Zahl sind Werte zwischen 128 und 191 zulässig<br />
• bei der zweiten sind Zahl Werte zwischen 0 und 255 erlaubt<br />
• Klasse-B-Netze werden vor allem an große Firmen, Universitäten und<br />
Online-Dienste vergeben<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 48 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Klassifikation der Netzwerke anhand der IP Nummer<br />
Klasse-C-Netze<br />
• erste Zahl einer IP-Adresse eines Klasse-C-Netzes liegt zwischen<br />
192 und 223<br />
• Die Zahlen zwei und drei gehören ebenfalls noch zur Netzwerknummer.<br />
• kleine und mittlere Unternehmen mit direkter Internet-Verbindung, aber<br />
auch kleinere Internet-Provider<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 49 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Typisches TCP/IP Ebene 2 Protokoll: Ethernet<br />
Arbitrierung (Buszuteilungsverfahren) nach CSMA / CD<br />
(Carrier Sense Multiple Access / Collision Detected)<br />
• Sendestation „hört“ am Bus ob Bus frei (Carrier Sense)<br />
• wenn Bus frei, dann wird die Nachricht gesendet<br />
• die Nachricht breitet sich im Bus wie eine Welle aus (Bus flooded)<br />
• alle Stationen hören mit<br />
• falls eine Station feststellt, dass zwei Nachrichten kollidieren (d.h. hört<br />
Mischung aus zwei Nachrichten gleichzeitig), wird ein dominantes<br />
Fehlersignal (Jam) gesendet<br />
• hören die mehreren Sender das Jam-Signal, stellen sie das Senden ein und<br />
warten eine Zeitspanne (Back-off)<br />
Vorraussetzung: Das Versenden eines minimalen Pakets dauert länger als die<br />
Kollisionserkennung und Kollisionsmeldung.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 50 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Typisches TCP/IP Ebene 2 Protokoll: Ethernet<br />
Physikalisches Netzwerk: Kabeltypen und Netzwerkkarten<br />
Original Ethernet (0,4" Koaxialkabel):<br />
Thick Ethernet Yellow Cable oder 10Base5 (10 MBit/s, Basisband, 500m)<br />
Billigere Varianten:<br />
Thin-Wire 10Base2 (10 MBit/s, 185m), 0,25„ Koaxialkabel<br />
Twisted Pair 10BaseT (bis 100 MBit/s, 30m), verdrilltes Telefonkabel<br />
Ethernet-Netzwerkkarten habe eine 48 Bit Adresse (MAC-Adresse).<br />
Ursprünglich waren die ersten 3 Byte <strong>für</strong> den Hersteller reserviert (von IEEE) und<br />
die anderen 3 Byte <strong>für</strong> die Gerätenummer.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 51 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Universal Resource Identifier (URI)<br />
Browser<br />
This is a sample text in a document. From the<br />
user's point of view a web document is just a<br />
document which contains links which point to<br />
other documents (or into other documents).<br />
These links may simply be activated by clicking.<br />
Image<br />
Document 1<br />
Document 2<br />
Document n<br />
Wie können Dokumente (bzw. Teile von Dokumente) im Internet eindeutig<br />
lokalisiert und identifiziert werden?<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 52 <strong>eCommerce</strong> Sommersemester 2008<br />
…
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2)<br />
Universal Resource Identifier (URI)<br />
URN URL<br />
URI<br />
URN (Uniform Resource Code) and URL (Uniform Resource Locator)<br />
URI: an identifier pointing at any kind of information resource in the web;<br />
superset of URN and URL<br />
URN: the globally unique name of the resource and an address indicates where<br />
it is; has no fixed dependence to the real location<br />
URL: a physical address of an object, defining the access protocol<br />
(scheme. e.g. HTTP)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 53 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Universal Resource Identifier (URI)<br />
Client<br />
1. URN 2. URL 3. URL 4. Resource<br />
UNS<br />
URL und URI Konfusion:<br />
Resource<br />
Server<br />
• HTML 3.2 Spezifikation spricht von URL<br />
• HTML 4.0 Spezifikation spricht von URI<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 54 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Universal Resource Identifier (URI)<br />
URL Schema (Scheme-specific Part of URL)<br />
Beispiel:<br />
http://www.web-server.de:80/users/student<br />
Syntax:<br />
" // " [ user [ " : " password ] " @ " ] host [" : " port] " / " url-path<br />
Semantik:<br />
user: Login eines Benutzers, kann entfallen<br />
password: Passwort eines Benutzers, kann entfallen oder leeres Passwort<br />
host: entweder vollständig qualifizierter Domänenname oder IP-Nummer<br />
port: optional, meist Port-Nummer 80 (Standard <strong>für</strong> Web Server)<br />
url-path: Rest der URL, spezifiziert den relativen Ort des Dokuments auf dem Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 55 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Universal Resource Identifier (URI)<br />
URL Schema (Scheme-specific Part of URL)<br />
http://www.web-server.de:80/users/student<br />
Scheme Scheme specific Part<br />
ftp: FTP protocol<br />
http: HTTP protocol<br />
https: HTTP over SSL (Secure Sockets Layer)<br />
news: newsgroups or individual articles<br />
nntp: Networks News Transfer Protocol (Usenet news between servers)<br />
mailto: Internet mailing address (SMTP or ESMTP)<br />
telnet: interactive services accessed by telnet protocol<br />
ldap: updating & searching directories over TCP/IP (X.500 directories)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 56 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
A Protocol which<br />
• defines how messages are formatted and transmitted which actions web servers<br />
and clients can perform<br />
• uses reliable connection-oriented TCP<br />
• is stateless<br />
Goal of HTTP:<br />
• easy to implement (light protocol)<br />
• enables the retrieval of text based documents<br />
• (fast protocol)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 57 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
Zugriff auf Server<br />
Hier bekanntes Standardverfahren<br />
Client Server<br />
1. Anfrage an Server<br />
2. Antwort des Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 58 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
Proxy Server und Tunnel<br />
Proxy und Gateway:<br />
1. Anfrage an Proxy<br />
Client Proxy<br />
4. Antwort an Client<br />
2. Anfrage 3. Antwort<br />
an Server an Proxy<br />
Origin Server<br />
Tunnel:<br />
1. Anfrage an Server<br />
Client Tunnel<br />
4. Antwort an Client<br />
2. Anfrage 3. Antwort<br />
an Server an Client<br />
Origin Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 59 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
HTTP Services<br />
Message Specifications:<br />
generic and Entity, Request and Response<br />
Content Negotiation:<br />
Language specific, Quality specific, Encoding specific Variants<br />
Authentication, Identification and Authorization<br />
Persistent Connection (HTTP/1.1)<br />
Chunked Encoding (HTTP/1.1)<br />
when length of content is not known at the beginning of the transfer<br />
Caching<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 60 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
HTTP Caching<br />
Client Cache Server<br />
Cache zwischen Client und Server<br />
Client Server<br />
Cache<br />
Cache auf Seiten des Client<br />
Client Server<br />
Cache<br />
Cache auf Seiten des Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 61 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
HTTP Unterstützung <strong>für</strong> Cockies<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 62 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
HTTP Unterstützung <strong>für</strong> Cockies<br />
Cookie Types: Set-Cookie and Cookies<br />
Cookie Content: Comment (optional)<br />
Domain (optional)<br />
Max-Age (optional)<br />
Path (optional)<br />
Secure (optional)<br />
Version (mandatory)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 63 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Hypertext Transfer Protocol (HTTP)<br />
HTTP Unterstützung <strong>für</strong> Cockies<br />
Eigenschaften:<br />
• Kleine Dateien (
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Nehmen Anfragen von Web Clients in Empfang und antworten durch:<br />
- Auslieferung von Web Seiten (HTML Dokumenten)<br />
- Ausführen von Skripten durch Interpreter, die als Module integriert sind<br />
- Aufruf von externen Skripten über CGI<br />
Aufzeichnen von Informationen:<br />
-Informationen der Clients<br />
- Loging Informationen über Zugriffe und Fehler<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 65 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Charakteristika von Web Server<br />
HTML/HTTP-Server:<br />
• Wartet auf HTTP/SHTTP-Anfragen<br />
• Anfrage = URL + Parameter/Daten<br />
• Aktivitäten des Servers:<br />
– Seite im Dateisystem zu URL suchen und zurückliefern<br />
– Skript im Dateisystem zu URL suchen und mit Parametern ausführen<br />
– Ergebnisse zurückgeben (CGI)<br />
– Sonstiges Mapping von URL und Parametern auf Funktionalität<br />
• HTTP-Server als Gateway zur eigentlichen Anwendung<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 66 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Charakteristika von Web Server<br />
HTTP-Server – Möglichkeiten zur Dynamik:<br />
• Inhalte (z.B. HTML-Seiten), die ausführbare Anweisungen enthalten,<br />
welche der Server interpretiert (Inline PHP)<br />
• SSI, XSSI<br />
• Serverside Scripting: PHP, JSP<br />
• Eigener Prozess: CGI, FastCGI<br />
• Im Kontext des Servers: Servlets, COM-Objects<br />
• Erweiterungen des Web-Servers, z.B. Apache Modules<br />
• Spezialserver, z.B. LEO Wörterbuch, bis zu 400.000 Anfragen täglich ...<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 67 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Anforderungen an Web Server Verfügbarkeit<br />
Geforderte Uptime erlaubte Downtime<br />
Availability Annual Monthly<br />
95% 438 hrs. 36.5 hrs. Beta-Test<br />
99.5% 43.8 hrs. 3.7 hrs. Großteil aller kommer-<br />
99.95% 4.38 hrs. 21.9 mins. ziellen <strong>Systeme</strong><br />
99.98% 1.75 hrs. 8.75 mins. Mission-critical <strong>Systeme</strong><br />
99.99% 0.88 hrs. 4.4 mins. Real-time<br />
99.999% 0.09 hrs. 0.4 mins. Carrier-quality <strong>Systeme</strong><br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 68 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Informationsgewinnung durch HTTP-Request<br />
Web-Browser geben mit:<br />
• IP Adresse, z.B.129.28.241.121<br />
• Domain-Name<br />
• Referring Page<br />
• Client-Plattform<br />
• Cookies<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 69 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Informationsgewinnung Benutzerdaten<br />
• Feststellung, welche Person sich hinter Request verbirgt<br />
• IP Adresse in HTTP Request<br />
• Authentifizierung durch Benutzer (Login)<br />
• Speicherung<br />
• URL-Rewriting (Session-Identifikator)<br />
• Cookies (siehe vorherige Folien)<br />
• Vergabe einer Session-ID durch Server (Speicherung bei<br />
Client, Abruf durch Server)<br />
• Client-Zertifikate (<strong>für</strong> SSL)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 70 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Web Server speichert Information zu allen Anfragen:<br />
• URL<br />
• Zeit<br />
Informationsgewinnung Server Log Analyse<br />
• Client-IP-Adresse<br />
• Browser-Identifikator (Typ, Version, Betriebssystem)<br />
• Referrer-URL<br />
• Meist zuerst Identifikation von User-Sessions und Zuordnung eines Identifikators<br />
• genutzt <strong>für</strong> Visualisierung oder Data-Mining ...<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 71 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.3 Protokolle (2) Web Server Funktionalität<br />
Internet<br />
Server Cluster (Server Farms)<br />
Load<br />
Balance<br />
Anfrage wird<br />
zum am<br />
wenigsten<br />
belasteten Server<br />
geschickt<br />
Web<br />
Server<br />
Web<br />
Server<br />
Web<br />
Server<br />
replizierte<br />
Inhalte<br />
Appl.<br />
Server<br />
Appl.<br />
Server<br />
Appl.<br />
Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 72 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung<br />
2.4.1 CGI<br />
2.4.2 PHP<br />
2.4.3 JavaScript<br />
2.4.4 Java Applets (extra Dokument)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 73 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung<br />
CGI<br />
• CGI as interface between servers and external applications.<br />
• CGI is a realized by scripting languages, e.g. Perl<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 74 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Communication with the Web Server<br />
Server Environment Variables:<br />
1 Request independent: SERVER_SOFTWARE<br />
SERVER_NAME<br />
GATEWAY_INTERFACE<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 75 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Communication with the Web Server<br />
Server Environment Variables:<br />
2 Request dependent: SERVER_PROTOCOL<br />
SERVER_PORT<br />
REQUEST_METHOD<br />
PATH_INFO<br />
PATH_TRANSLATED<br />
SCRIPT_NAME<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 76 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Communication with the Web Server<br />
Server Environment Variables:<br />
2 Request dependent (continued): REMOTE_HOST<br />
REMOTE_ADDR<br />
AUTH_TYPE<br />
REMOTE_USER<br />
REMOTE_IDENT<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 77 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Access to Server Environment Variables:<br />
#!/usr/bin/perl<br />
print "Content-type: text/html","\n\n";<br />
print "", "\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "Subject of the HTML File","\n";<br />
print "","\n";<br />
$server_name = $ENV{'SERVER_NAME'};<br />
print "The Server Name of the machine is ",<br />
$server_name,"","\n";<br />
print "\n";<br />
print "","\n";<br />
print "","\n";<br />
exit (0);<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 78 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Application dependent Data:<br />
#!/usr/bin/perl<br />
print "Content-type: text/html","\n\n";<br />
print "", "\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "Subject of the HTML File","\n";<br />
print "","\n";<br />
%data = ("name",“Schiller","age",35,"place",“Jena");<br />
print $data{'name'}, " is ", $data{'age'}, " years and<br />
lives in", $data{'place'};<br />
print "\n";<br />
print "","\n";<br />
print "","\n";<br />
exit (0);<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 79 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Perl Program:<br />
Web Server and Perl Execution:<br />
#!/usr/bin/perl<br />
print "Content-type: text/html","\n\n";<br />
print "", "\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "", "\n";<br />
print "","\n";<br />
print "Subject of the HTML File","\n";<br />
print "","\n";<br />
$server_name = $ENV{'SERVER_NAME'};<br />
print "The Server Name of the machine is<br />
",$server_name,"","\n";<br />
print "\n";<br />
print "","\n";<br />
print "","\n";<br />
exit (0);<br />
HTML exportiert durch Web Server:<br />
<br />
<br />
<br />
<br />
<br />
Subject of the HTML File<br />
<br />
The Server Name of the machine is<br />
my_server.wiwi.uni-jena.de<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 80 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Perl Interpreter: perl perl-script.pl<br />
#!/usr/bin/perl<br />
$i = 42;<br />
$square = $i * $i;<br />
print "the square of ", $i, " is ", $square, "\n";<br />
if($i > 1000)<br />
{<br />
$i = 0;<br />
}<br />
while($i
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Perl Interpreter: perl perl-script.pl<br />
#!/usr/bin/perl<br />
$value = 123456;<br />
$partof = substr($value,1,3);<br />
print $partof;<br />
@data = (“<strong>Christian</strong>",“Albrecht",“Kiel","Germany");<br />
print $data[0], " ", $data[1], " lives in ", $data[2], " ",<br />
$data[3];<br />
for($i = 1;$i
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung CGI<br />
Perl Interpreter: perl perl-script.pl<br />
Interpreter Execution:<br />
Option | Meaning<br />
-c Syntax Check<br />
-d Debug Mode<br />
-S Usage of given Paths<br />
-T strict Syntax Check while Execution<br />
-v Perl Interpreter Version<br />
-w Syntax Check and Warnings while Execution<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 83 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
Personal Home Page Tool<br />
<br />
<br />
PHP Examples<br />
<br />
<br />
PHP Examples<br />
<br />
<br />
<br />
echo ("or without processing instructions")<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 84 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
• 1994: erste Version von R. Lerdorf: Personal Home Page Tool<br />
einfache Skriptsprache zum Gestalten von Web Pages<br />
• Open Source: PHP Hypertext Preprocessors<br />
• 1995 erste professionelle <strong>Systeme</strong> PHP/FI (Personal Hompage Tools<br />
Form Interface) als PHP 2<br />
• seit 1997 intensive Weiterentwicklung mit dem Ergebnis 1999 PHP 3<br />
• 2000 Einführung von PHP 4, aktuell PHP 5<br />
•Besonderheit von PHP im Gegensatz zu z.B. Perl: nur als Webskript<br />
implementiert (Perl seit 1986 von L. Wall)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 85 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
• PHP kann vom Web Server direkt interpretiert werden<br />
(Einbindung als Modul) oder<br />
• PHP wird über CGI aufgerufen<br />
• Apache ist der wichtigste dieser Web Server, der PHP Module<br />
unterstützt und gleichzeitig der am meisten verwendete Web<br />
Server<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 86 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
Programmierung: Arrays<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
Programmierung: Multi-dimensional Arrays<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
Programmierung: Integer Variablen<br />
<br />
<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 89 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung PHP<br />
Programmierung: Floating Points Variablen<br />
Floating-point Numbers<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 90 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
• ist eine Client-Seitige Scriptsprache:<br />
in HTML Seite eingebettet und wird im Browser (also auf<br />
Client-Seite) ausgeführt / interpretiert<br />
• im HTML Dokument wird JavaScript innerhalb eines<br />
„Script“ Tag definiert:<br />
<br />
function checkZahl(obj){<br />
var x =obj.val e;<br />
if (isNaN(x)){<br />
alert(x +“ ist keine Zahl“);<br />
return false;<br />
}else return true;<br />
}<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 91 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Einfaches Beispiel:<br />
Test auf JavaScript enabled oder disabled in Browser<br />
<br />
<br />
JavaScript Hello World<br />
<br />
<br />
<br />
<br />
<br />
JavaScript Hello World<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 92 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Einsatzmöglichkeiten:<br />
Prüfung und Manipulation von Daten auf Seiten des Clients<br />
z.B. einfach Eingabevalidierungen (siehe JavaScript Funktionen)<br />
– Eingabe nicht leer<br />
– Eingabe ist numerisch oder Ganzzahl<br />
Dynamischer Aufbau von Web Seiten ohne Rückgriff auf<br />
Server, z.B. Anordnen von Graphiken, Aufbereiten von Listen<br />
Nicht geeignet <strong>für</strong>:<br />
vertragsrelevante Geschäftlogik (z.B. Bonitätsprüfung, …)<br />
Diese muss auf Server ablaufen.<br />
JavaScript wird von unterschiedlichen Browsern unterschiedlich<br />
abgearbeitet! (z.B. MS Internet Explorer, Mozilla oder Firefox)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 93 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Anwendung von JavaScript:<br />
• Aussehen und Inhalt von WWW-Dokumenten beeinflussen (Inhalte<br />
einfügen, Farben ändern, mehrere Frames gleichzeitig beeinflussen, ...)<br />
• Browser steuern (Dialogboxen erzeugen, Browser-Windows öffnen/<br />
schließen, Menüleisten, Statuszeile und Symbolleisten des Browsers<br />
beeinflussen, Anordnung von Frames beliebig definieren, URL des<br />
Dokumentes ändern, die Browser-History benutzen, ...)<br />
• Interaktion mit dem Dokumentinhalt erlauben (Auswerten der<br />
Benutzeraktionen - Click, Seite verlassen, etc.)<br />
• den Client-Zustand lokal speichern/lesen - Cookies, d.h. kann begrenzt<br />
auf die Festplatte des Nutzers schreiben/lesen<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 94 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Nicht geeignet <strong>für</strong>:<br />
• Graphiken selbständig erzeugen<br />
• hat „keinen“ Zugriff auf Maschinenressourcen<br />
(Ausnahme - Cookies)<br />
Sicherheitsaspekte beachten!<br />
• keinerlei Netzwerkoperationen<br />
Ausnahme: Darstellung beliebiger URL‘s aus dem WWW<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 95 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
- interpretierte Programmiersprache mit rudimentärer Objektorientierung<br />
- wird durch WebBrowser interpretiert<br />
- Objekte z.B. können Web Browser Windows und deren Inhalte repräsentieren<br />
- im wesentlichen auf die Interaktion mit den Nutzern ausgerichtet<br />
(erweiterte HTML Forms)<br />
Syntax ist an C/C++ und Java angenähert, stellt aber eine eigenständige Sprache<br />
dar:<br />
• keine Variablentypisierung notwendig - d.h. Variablen werden<br />
nicht explizit Typen zugewiesen<br />
• Objekte in JavaScript erinnern oft an Arrays oder Collections<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 96 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
JavaScript ist kein vereinfachtes Java sondern eine eigenständige<br />
Programmiersprache<br />
- selbst der Name wurde vom ursprünglichen LiveScript erst später in<br />
JavaScript geändert<br />
(z.B. können mit JavaScript keine Graphiken erzeugt werden, es kann<br />
auch keine Netzwerke nutzen, kann nur begrenzt auf Systemressourcen<br />
zugreifen etc.)<br />
- kann lediglich den Browser und seine Inhalte steuern<br />
� Java kann dies wiederum nur sehr begrenzt<br />
� damit ergänzen sich diese Sprachen eher<br />
JavaScript kann auch zur Entwicklung „großer“, komplexer Programme<br />
verwendet werden. Die Sinnhaftigkeit ist aber zu bezweifeln.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 97 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Programmbeispiel Quadrieren<br />
<br />
<br />
JavaScript Multiplication with local Variables<br />
<br />
<br />
<br />
<br />
<br />
<br />
input = window.prompt("Insert number to be multiplied by 5:","");<br />
multiplicate(input);<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 98 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Funktionen und Ereignisse:<br />
Funktionen:<br />
• Verarbeitung von Daten und deren Manipulation<br />
• selbstdefinierte Funktionen und vordefinierte Funktionen<br />
Ereignisse (Events):<br />
• Auffangen von Ereignissen, dadurch werden Funktionen ausgelöst<br />
• Interaktion mit den Anwendern<br />
• Verankerung zu HTML Seiten<br />
Charakteristisches Vorgehen bei allen Web-basierten <strong>Systeme</strong>n!<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 99 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
vordefinierte Funktionen:<br />
mathematische Hilfsroutinen:<br />
• isNaN ist das Argument eine gültige Zahl (is NotaNumber)<br />
• isFinite ist das Argument im gültigen Zahlenbereich<br />
• eval interpretiert das Argument als math. Ausdruck<br />
• Number konvertiert das Argument in eine Zahl<br />
• parseInt konvertiert das Argument in eine Ganzzahl<br />
• parseFloat konvertiert das Argument in eine Dezimalzahl<br />
String (de)codierung <strong>für</strong>s Web:<br />
• encodeURI verschlüsselt Sonderzeichen einer URI<br />
• decodeURI entschlüsselt Sonderzeichen einer URI<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 100 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Ereignisse:<br />
JavaScript Aufruf aus einem HTML Formular<br />
<br />
Aktivierung durch EventHandler:<br />
• onChange, onClick, onDblClick<br />
• onError, onAbort<br />
• onLoad, onReset, onUnload, onFocus,onBlur<br />
• onKeydown, onKeypress, onKeyup ...<br />
• onMousedown, onMousemove, onMouseover, onMouseup ...<br />
Beispiel Eingabeüberprüfung:<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 101 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Beispiele <strong>für</strong> Ereignisse:<br />
<br />
onChange bei Verändreungen von Eingabeelementen<br />
onClick bei Mausklick oder Doppelklick auf Element<br />
onFocus tritt ein, wenn ein Element selektiert (aktiviert) wurde<br />
onLoad beim Laden der HTML-Datei in den Browser<br />
onUnload beim Verlassen der HTML-Datei<br />
onMouseover beim Überfahren eines Elements mit der Maus<br />
onMouseout beim Herausfahren der Maus aus Bereich eines Elements<br />
onReset beim Zurücksetzen eines Formulars<br />
onSubmit beim Absenden eines Formulars<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 102 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Syntax: Operatoren<br />
Operatoren dienen z.B. zur Auswertung bestimmter Inhalte von Variablen,<br />
die Verknüpfung von Variablen (ähnliche Syntax / Semantik wie Java)<br />
Vergleichsoperatoren: Logische Operatoren: arithmetische Operatoren:<br />
== gleich<br />
!= ungleich<br />
< kleiner<br />
> größer<br />
größer gleich<br />
3 == 3 ⇒ true<br />
3 > 4 ⇒ false<br />
3 != 4 ⇒ true<br />
“ x“ == “ x“⇒ true<br />
&& logisch UND<br />
|| logisch ODER<br />
! logisch NICHT<br />
if ((a
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Syntax: Variablen und Wertzuweisungen<br />
• Ablage <strong>für</strong> Integer, Real, Text, … , aber keine explizite Typisierung<br />
• Gültigkeitsbereiche (Scopes) <strong>für</strong> Variablen (lokal und global)<br />
können implizit oder explizit deklariert werden:<br />
1. direkt im Programmcode<br />
(implizite Deklaration)<br />
immer mit Wertzuweisung:<br />
... Anweisung 1;<br />
Anweisung 2;<br />
... ;<br />
i = 5;<br />
... ;<br />
nname = ´Martin´;<br />
... ;<br />
Anweisung n;<br />
2. explizite Variabelendeklaration:<br />
var i;<br />
var vname = ´Martin´;<br />
... Anweisung 1;<br />
Anweisung 2;<br />
... ;<br />
Anweisung n;<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 104 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Syntax: Gültigkeitsbereiche von Variablen<br />
lokale Gültigkeit<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 105 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Syntax: Gültigkeitsbereiche von Variablen<br />
globale Gültigkeit<br />
<br />
<br />
<br />
<br />
<br />
input = window.prompt("Text:","");<br />
multiplicate(input);<br />
document.writeln(result); // in scope<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 106 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Syntax: Kontrollstrukturen entsprechen denen von Java<br />
Bedingte Anweisung:<br />
if ( condition) {<br />
// expression in true case<br />
}<br />
else {<br />
//expression infalse case<br />
}<br />
Switch-Case Auswahl:<br />
switch(choice)<br />
{<br />
case condition: expression; break;<br />
default : expression;<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 107 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Document Object Model (DOM)<br />
• Repräsentation von Dokumenten als Baum<br />
• Bearbeitung durch Baummanipulation<br />
• Vergleiche XML DOM<br />
DOM Manipulation von verschiedenen Browsern verschieden!<br />
Das W3C definierte 1998 das DOM als Standard.<br />
Die Elemente einer Seite bilden eine hierarchisch geordnete Struktur.<br />
Auf diese Elemente lässt sich mit den Methoden von JavaScript zugreifen.<br />
Die Wurzel einer jeden HTML Seite ist das document, das<br />
dann alle weiteren Formulare und Tags enthält.<br />
Die einzelnen Elemente lassen sich mit ihren symbolischem<br />
Namen oder der Id referenzieren.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 108 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung JavaScript<br />
Document Object Model (DOM)<br />
Location<br />
Window<br />
Document<br />
Frames 0 ..* 0 ..*<br />
0 ..* Applets Forms<br />
0 ..*<br />
Elements<br />
0 ..*<br />
Options<br />
<br />
All<br />
<br />
Layers<br />
<br />
TextArea<br />
<br />
Select<br />
<br />
Input<br />
<br />
RadioButton<br />
<br />
Style<br />
<br />
CheckBox<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 109 <strong>eCommerce</strong> Sommersemester 2008<br />
1<br />
0 ..*<br />
0 ..*<br />
Text/CSS
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.4 Programmierung Java<br />
(siehe<br />
Programmbeispiele<br />
auf Server)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 110 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation<br />
2.5.1 Strukturierte Dokumente<br />
2.5.2 HTML<br />
2.5.3 XML<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 111 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
SGML: Standard Generalized Markup Language<br />
ISO Standard 8879<br />
<br />
<br />
<br />
Text of Title<br />
<br />
<br />
Text, Links, Graphics, etc.<br />
<br />
<br />
SGML oder HTML?<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 112 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
SGML: Standard Generalized Markup Language<br />
ISO Standard 8879<br />
von IBM entwickelt<br />
Ziel: Standard (ASCII) Texte mit unterschiedlichen Formatierungen versehen zu<br />
können;<br />
dazu werden den verschiedenen Textpassagen bestimmte<br />
Formatierungsbefehle zugeordnet<br />
Trennung von Inhalt (Content), Struktur (Syntax) und Darstellung (Presentation)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 113 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
SGML: Grundlegende Konzepte<br />
Chapter<br />
Section<br />
Figure<br />
Document Content:<br />
logical structure, actual content<br />
Book<br />
Chapter<br />
Section<br />
Paragraph<br />
Chapter<br />
Section<br />
Figure<br />
Document Presentation:<br />
consist of a set of rules, e.g. section numbering and formatting or location of footnotes<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 114 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
SGML: Trennung zwischen Inhalt und Präsentation<br />
<br />
<br />
<br />
your name<br />
<br />
<strong>eCommerce</strong> Basics<br />
<br />
SGML<br />
<br />
<br />
Slide #3<br />
This is my text.<br />
my_image.gif<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 115 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
DTD: Document Type Definition<br />
hier einfaches Beispiel des Buches<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 116 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation Strukturierte Dokumente<br />
DTD: Document Type Definition<br />
Metamodell der DTD:<br />
• Elements<br />
• Model Groups Connectors: (, & |) Occurence: (+ * ?)<br />
• Text Elements<br />
• Exceptions: Inclusion (+) or Exclusion (-)<br />
• Attributes<br />
• Entities<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 117 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation HTML<br />
HTML: Hyper Text Mark-up Language<br />
Beschreibung in DTDs <strong>für</strong> HTML 4.0:<br />
• transitional DTD (e.g. , , )<br />
• strict DTD: transitional DTDs which are obsolete in HTML 4.0<br />
• frameset DTD: usage of frame in a HTML file<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 118 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation HTML<br />
2 Categories of HTML content elements:<br />
- Block-level Elements<br />
- Inline Elements<br />
1 Content Model:<br />
Block-level elements may contain block-level elements as well as inline elements. They<br />
create the larger structures. Inline elements may contain only data and other inline<br />
elements.<br />
2 Formatting<br />
Block-line elements begin with new lines and are not subject of line breaking.<br />
Inline elements do not necessarily start with new lines and may be broken across lines.<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 119 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation HTML<br />
HTML: Hyper Text Mark-up Language<br />
Web Browser (Darstellung von Web Sites und Web Applications)<br />
HTML Framework<br />
Text<br />
Listen<br />
Verweise (Links, References)<br />
Tabellen<br />
Bilder<br />
Rahmen (Frames)<br />
Umlaute und Sonderzeichen<br />
Formulare (Forms, Datenaustausch in HTML-Dokumenten)<br />
Farben (Schriftfarbe, Hintergrund, Farbwechsel und Farbtabellen)<br />
Bilder (Images und Image Maps)<br />
CSS, Cascading Style Sheets<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 120 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML: eXtensible Mark-up Language<br />
Dokumente<br />
Parsing<br />
XML Files<br />
SAX Parser<br />
DTD<br />
Erweiterte Konzepte<br />
DOM<br />
Schema<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 121 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML versus HTML<br />
- HTML is inflexible<br />
- SGML is complex<br />
SGML<br />
Declaration<br />
Document<br />
Parser<br />
HTML<br />
DTD<br />
Document XML DTD<br />
XML SGML<br />
Declaration<br />
Parser<br />
XML<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 122 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
Features<br />
<br />
you@yourAddress.com<br />
me@myAddress.com<br />
<strong>eCommerce</strong> Basics Course 2005<br />
<br />
This is the contents of the course.<br />
<br />
<br />
- Tags identify the message as a whole:<br />
the destination and sender addresses, the subject and the text of the message.<br />
Like in HTML, the tag has a matching end tag: .<br />
The data between the tags define an element of the XML data.<br />
It is this ability for one tag to contain others that gives XML its ability to<br />
represent hierarchical data structures<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 123 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
Features<br />
- text-based markup language<br />
- becoming the standard for data interchange on the web<br />
Similar to HTML:<br />
- data is identified by tags ( ... )<br />
(the tags are known as "markup”)<br />
However XML is “well-formed”.<br />
In contrast to HTML:<br />
- XML tags inform what the data means, rather than how to display it.<br />
e.g. HTML tag: ... <br />
e.g. XML tag: ... <br />
Puts a label on a piece of data like a field name in your program.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 124 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Document Structure<br />
Header with<br />
XML Instructions<br />
Document Type<br />
Declaration of<br />
used DTD<br />
Documentation<br />
Content<br />
Root Element<br />
Data Element<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Elements and Attributes<br />
XML DATA Elements<br />
A unit of XML data, delimited by two tags (well-formed). An XML element can enclose other<br />
elements.<br />
<br />
..<br />
..<br />
<br />
The element contains two elements.<br />
Elements may contain other elements or attributes.<br />
XML DATA Attributes<br />
A qualifier on an XML tag that provides additional information.<br />
<br />
<br />
title is an attribute, and Section Information is its value.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 126 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
When to use Elements, when Attributes?<br />
There is neither a specification nor a standard!<br />
Rule of Thumb:<br />
use elements for presentable data and attributes for system data.<br />
Elements:<br />
data presented to a client or application; or part of a formula<br />
can be treated as application data and is easily searchable<br />
e.g.: Internet Programming<br />
Attributes:<br />
data used for grouping, letting an application know how to handle sth.<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 127 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Document Type Definition<br />
Einfaches Beispiel<br />
<br />
<br />
<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 128 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
Basic Parsing: SAX Parser Framework<br />
Simple API for XML<br />
Object Parsing: Document Object Model (DOM)<br />
(based on SAX) [advanced Concept]<br />
Document Definitions for Parsers:<br />
• simple Definition<br />
DTD (Document Type Definition)<br />
• improved Approaches<br />
Schema (Microsoft et al.) [advanced Concept]<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 129 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (course_sample_01.xml)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<strong>eCommerce</strong><br />
<br />
<br />
<br />
Overview<br />
<strong>eCommerce</strong> Introduction<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 130 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
SAX Parser Framework<br />
SAX Parser Factory:<br />
creates an instance of the parser<br />
Document Handler:<br />
methods which are invoked when an XML tag<br />
is recognized<br />
defines also methods which are invoked when<br />
the parser encounters the text in an XML<br />
element or an inline processing instruction,<br />
respectively.<br />
Error Handler:<br />
Methods error, fatal error, and warning are<br />
invoked in response to various parsing errors.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 131 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
SAX Parser Framework<br />
DTD Handler:<br />
interface which defines methods invoked<br />
when processing definitions in a DTD.<br />
Entity Resolver:<br />
is invoked when the parser must identify<br />
data identified by a URI<br />
The public identifier may be specified in<br />
addition to the URL. The Entity Resolver<br />
can then use the public identifier instead of<br />
the URL to find the document, for example<br />
to access a local copy of the document if<br />
one exists.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 132 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
import javax.xml.parsers.SAXParserFactory;<br />
import javax.xml.parsers.ParserConfigurationException;<br />
import javax.xml.parsers.SAXParser;<br />
public class IP_parser_01 extends HandlerBase {<br />
public static void main (String argv []) {<br />
if (argv.length != 1) {<br />
System.err.println ("Usage: IP_parser_01 ");<br />
System.exit (1);<br />
}<br />
SAXParserFactory factory = SAXParserFactory.newInstance();<br />
try {<br />
// Parse the input<br />
SAXParser saxParser = factory.newSAXParser();<br />
saxParser.parse( new File(argv [0]), new IP_parser_01() );<br />
} catch (Throwable t) {<br />
t.printStackTrace ();<br />
}<br />
System.exit (0); } }<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 133 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Basic Parsing: Call Back Routines (Start and End of Document)<br />
//===========================================================<br />
// SAX DocumentHandler methods<br />
//===========================================================<br />
public void startDocument ()<br />
throws SAXException<br />
{<br />
System.out.println("");<br />
}<br />
public void endDocument ()<br />
throws SAXException<br />
{<br />
System.out.println("...Parsing ends.");<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 134 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Basic Parsing: Call Back Routines (Start and End of Element)<br />
public void startElement (String name, AttributeList atts)<br />
throws SAXException<br />
{<br />
System.out.print("startElement: ");<br />
public void endElement(String name)<br />
throws SAXException<br />
{<br />
System.out.println("endElement: " + name); }<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 135 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Basic Parsing: Call Back Routines (Characters)<br />
public void characters(char[] buf , int start, int end)<br />
throws SAXException<br />
{<br />
System.out.println("start: " + start + " end: " + end);<br />
}<br />
String s = new String(buf, start, end);<br />
System.out.println("characters: " + s);<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 136 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Additional Event Handling: Call Back Routines<br />
A locator is an object that contains the information necessary to find the<br />
document. The Locator class encapsulates a system ID (URL) or a public<br />
identifier (URN), or both!<br />
public void setDocumentLocator (Locator l)<br />
{<br />
// Save this to resolve relative URIs or to<br />
// give diagnostics.<br />
try {<br />
}<br />
System.out.print ("LOCATOR");<br />
System.out.println ("\n SYS ID: " + l.getSystemId() );<br />
} catch (IOException e) {<br />
// Ignore errors<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 137 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Processing Instruction: Call Back Routines<br />
Information contained in an XML structure that is intended to be interpreted by<br />
a specific application.<br />
XML File:<br />
<br />
<br />
SAX Parser:<br />
public void processingInstruction (String target, String data)<br />
throws SAXException<br />
{<br />
System.out.print ("PROCESSING INSTRUCTION: ");<br />
System.out.println ("");<br />
}<br />
Parsing Result:<br />
PROCESSING INSTRUCTION : <br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 138 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Name Space Handlers: Call Back Routines<br />
Specifies a unique label to the set of element names defined by a DTD.<br />
A document using that DTD can be included in any other document without<br />
having a conflict between element names.<br />
The elements defined in your DTD are then uniquely identified so that, for<br />
example, the parser can tell when an element called should be<br />
interpreted according to your DTD, rather than using the definition for an<br />
element called "name" in a different DTD.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 139 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Name Space Handlers: Call Back Routines<br />
Specifies a unique label to the set of element names defined by a DTD.<br />
<br />
<br />
<br />
<br />
Here is some data.<br />
<br />
<br />
<br />
<br />
Here is some other data (interpret different).<br />
<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 140 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Name Space Handlers: Call Back Routine, continued<br />
2 calls available: Begin and End<br />
Begin:<br />
public void startPrefixMapping (String prefix, String uri)<br />
throws SAXException<br />
{<br />
System.out.print ("Namespace Mapping starts for ");<br />
System.out.println ("prefix: " + prefix + " ; uri: " + uri");<br />
}<br />
End:<br />
public void endPrefixMapping (String prefix)<br />
throws SAXException<br />
{<br />
System.out.print ("Namespace Mapping ends for ");<br />
System.out.println ("prefix: " + prefix");<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 141 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Error Handling: default Handling<br />
three kinds of errors:<br />
• fatal error: occurs in the SAX parser when a document is not well formed, or<br />
otherwise cannot be processed.<br />
• error: is generally a validation error -- in other words, it occurs when an XML<br />
document is not valid, although it can also occur if the declaration specifies an<br />
XML version that the parser cannot handle.<br />
• warning: is generated when the document's DTD contains duplicate definitions,<br />
and similar situations that are not necessarily an error.<br />
CHARS: org.xml.sax.SAXParseException: Expected ""<br />
to terminate element starting on line 20.<br />
...<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 142 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Error Handling. Call Back Routine<br />
A SAXException can be constructed using a message, another exception, or both.<br />
So, for example, when Echo.startDocument outputs a string using the emit<br />
method, any I/O exception that occurs is wrapped in a SAXException and sent<br />
back to the parser:<br />
// ... sth. throwable<br />
} catch (SAXException sxe) {<br />
// Error generated by this application<br />
// (or a parser-initialization error)<br />
Exception x = sxe;<br />
if (sxe.getException() != null)<br />
x = sxe.getException();<br />
x.printStackTrace();<br />
} catch (ParserConfigurationException pce) {<br />
// Parser with specified options can't be built<br />
pce.printStackTrace();<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 143 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Basic Parsing: XML Document (parser_01.xml)<br />
Error Handling: Call Back Routine, another Example<br />
// ... sth. throwable<br />
} catch (SAXParseException spe) {<br />
// Error generated by the parser<br />
System.out.println ("\n** Parsing error"<br />
+ ", line " + spe.getLineNumber ()<br />
+ ", uri " + spe.getSystemId ());<br />
System.out.println(" " + spe.getMessage() );<br />
}<br />
// Use the contained exception, if any<br />
Exception x = spe;<br />
if (spe.getException() != null)<br />
x = spe.getException();<br />
x.printStackTrace();<br />
} catch (ParserConfigurationException pce) {<br />
// Parser with specified options can't be built<br />
pce.printStackTrace();<br />
}<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 144 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Document Type Definition<br />
(course_sample_02.dtd)<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
%xhtml;<br />
<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 145 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Specifying Elements:<br />
<br />
Example: <br />
Special Element Values (Element Definition Type):<br />
The element definition could use one of two special values: ANY or EMPTY.<br />
ANY:<br />
The element may contain any other defined element, or PCDATA.<br />
Usually used for the root element of a general-purpose XML document such as<br />
created by a word processor. Textual elements could occur in any order in<br />
such a document, so specifying ANY makes sense.<br />
EMPTY:<br />
The element contains no contents.<br />
<br />
Alternative: Nested elements specified in a parenthesized list of elements.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 146 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Specifying Elements (continued):<br />
Nested Elements:<br />
<br />
<br />
<br />
<br />
<br />
...<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 147 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Combination of Elements<br />
<br />
Both Elements (FirstElement, SecondElement) have to appear exactly once!<br />
Operators<br />
[Default Must apear exactly one time<br />
]<br />
? Must appear once or not at all<br />
+ Must appear at least oncs (1 .. n<br />
times).<br />
* May appear one or many times [0 .. n]<br />
Grouping<br />
<br />
or<br />
Operator Description<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 148 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Parsed Data (only character data, no nested elements):<br />
<br />
<br />
<br />
<br />
<br />
...<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 149 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Entity References<br />
A reference to an entity that is substituted for the reference when the XML document<br />
is parsed.<br />
<br />
It may reference a predefined entity e.g.:<br />
<br />
<br />
”><br />
<br />
<br />
or it may reference one that is defined in the DTD.<br />
Additional Useful Entities:<br />
<br />
<br />
<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 150 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Entity References<br />
Entity References<br />
References to external Files:<br />
In the XML data, the reference could be to an entity that is defined in the local subset of<br />
the DTD or to an external XML file (an external entity).<br />
<br />
DTD:<br />
<br />
<br />
XML File:<br />
&Homepage;<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 151 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Defining Attributes<br />
<br />
<br />
<br />
The last entry in the attribute specification determines the<br />
attributes default value, if any, and tells whether or not the<br />
attribute is required.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 152 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Defining Attributes<br />
Specification Specifies<br />
#REQUIRED The attribute value must be specified in the<br />
document.<br />
#IMPLIED The value need not be specified in the document.<br />
If it isn't, the application will have a default value it<br />
uses.<br />
"defaultValue" The default value to use, if a value is not specified<br />
in the document.<br />
#FIXED "fixedValue" The value to use. If the document specifies any<br />
value at all, it must be the same.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 153 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML DTD, Document Type Definition Rules<br />
Defining Attributes<br />
Attribute Type Specifies<br />
...(value1 | A list of values separated by vertical bars.<br />
value2 | ...)<br />
CDATA "Unparsed character data".<br />
(For normal people, a text string.)<br />
ID A name that no other ID attribute shares.<br />
IDREF A reference to an ID defined elsewhere in the document.<br />
IDREFS A space-separated list containing one or more ID references.<br />
ENTITY The name of an entity defined in the DTD.<br />
ENTITIES A space-separated list of entities.<br />
NMTOKEN A valid XML name composed of letters, numbers, hyphens, underscores,<br />
and colons.<br />
NMTOKENS A space-separated list of names.<br />
NOTATION The name of a DTD-specified notation, which describes a non-XML data<br />
format, such as those used for image files.*<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 154 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
Document Object Model (DOM)<br />
Defining Attributes<br />
Use the DocumentBuilderFactory class to get a<br />
DocumentBuilder instance (upper left)<br />
produce a Document (a DOM) that<br />
conforms to the DOM specification (lower right).<br />
W3C standardized DOM in 1998.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 155 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
Document Object Model (DOM)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 156 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
• new but incomplete specification, subject of change<br />
(XML schema is not part of the XML 1.0 specification)<br />
• overcomes some limitations and shortcomings of DTDs<br />
• supports more accurate representations of XML structure<br />
constraints<br />
• provides an XML styling process of constraining data<br />
• Schemas are well-formed and valid XML documents<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 157 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
• using XML documents for the definition of XML documents<br />
• supporting rudimentary data types<br />
• providing simple and complex elements<br />
(user defined data types)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 158 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
<br />
<br />
<br />
<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
Data Types:<br />
string Character strings<br />
boolean Binary valued logic (true or false)<br />
float 32-bit floating point type<br />
double 64-bit floating point type<br />
decimal Standard decimal notation, positive and negative<br />
timeInstant A combination of date and time representing one<br />
single instant time<br />
TimeDuration Duration of time<br />
recurringInsta A specific time that recurs over a<br />
nt<br />
binary Binary data<br />
uri A Uniform Resource Indicator (URI)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 160 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
Data Types:<br />
<br />
< complexType name=" myNAMESPACE:ChapterType"><br />
<br />
<br />
<br />
<br />
ChapterType defines the name of the complex element.<br />
Heading is part of the complex element of the type of<br />
string.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 161 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XML Schema<br />
<br />
Data Types: Attributes<br />
2 Grundlagen<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
2.5 Datenpräsentation XML<br />
XSL: Extensible Stylesheet Language<br />
• Specify display characteristics:<br />
identify data content in an XML file and tell how to<br />
display it with an XSL stylesheet<br />
• Specify tag conversions<br />
• Specify "flow objects" or "formatting objects", and the links<br />
between them<br />
Direct Interpretation of XML Instructions by the Web<br />
Server<br />
Integration of XML in Java Servlets<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 163 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitslücken<br />
Grundsätzlich:<br />
• Versenden und empfangen von statischen Dokumenten<br />
• Versenden und empfangen von dynamischen Elementen<br />
Probleme:<br />
• Daten können von Dritten abgefangen werden<br />
• Schaden auf Seiten des Clients<br />
• Schaden auf Seiten des Servers<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 164 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitslücken<br />
Hacker, Würmer, Phishing und Trojanische Pferde<br />
Abfangen von Passwörtern<br />
- einige Protokolle wie telnet verschlüsseln Passwörter nicht<br />
- Passwörter sind meist einfach und können erraten, oder durch<br />
massives Probieren herausgefunden werden<br />
Bei einer one-way Encryption mit offenem Zugriff zu den<br />
verschlüsselten Passwörtern (z.B. Standard UNIX Password Scheme)<br />
können Passwörter durch raten, verschlüsseln und vergleichen gefunden<br />
werden<br />
- Hackers nutzen diese Passwörter zum Einbruch in Rechner, z.T. Missbrauch<br />
des Rechners<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 165 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitslücken<br />
Hacker, Würmer, Phishing und Trojanische Pferde<br />
Morris Internet Worm<br />
entwickelt durch Robert T. Morris, ein Student der Cornell University, 1988;<br />
nutzt Fehler in Berkley UNIX (Solaris, VAX, andere BSD <strong>Systeme</strong>)<br />
- versucht eine rsh (Remote Shell) von vertrauten Maschinen zu nutzen<br />
- suche eines Server (finger) der Login Data der User bekannt gibt<br />
- Nutzung des Debug Mode von sendmail SMTP Server welcher die<br />
Server dazu brachte Skripte auszuführen ⇒ weitere Ausbreitung<br />
Schaden:<br />
6000 Maschinen brachen zusammen durch die Last des Weiterverbreitens des Wurms<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 166 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitslücken<br />
Hacker, Würmer, Phishing und Trojanische Pferde<br />
Phishing<br />
Durch Vortäuschen einer offiziellen eMail von einer Bank oder Behörde wird die<br />
Eingabe von Daten (Login und Passwort) auf einer bestimmten Web Seite verlangt.<br />
Diese Web Seite wird von den Phishern betrieben.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 167 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitslücken<br />
Hacker, Würmer, Phishing und Trojanische Pferde<br />
Trojanische Pferde<br />
Wie das antike Vorbild sehen diese vertrauenswürdig aus und werden von<br />
den Benutzern selbst geladen.<br />
Die Tarnung kann z.B. durch Vorgabe einer falschen Herkunft<br />
(z.B. gefälschte IP Nummer) geschehen<br />
Umgeht Sicherheitskonzepte wie Firewalls und Zugriffschutz.<br />
JavaScript unterstützt den Bau von Trojanischen Pferden.<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 168 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicheres Ausführen von Java Applets in Sand Box<br />
Java läuft in einer Sand Box (kein direkter Zugriff zu Systemressourcen)<br />
Die einzelnen Mechanismen sind:<br />
- Byte Code Verifier (Code-Manipulationen schwierig)<br />
- Applet Loader / Class Loader (lädt nur die angeforderten Java Objekte)<br />
- Securiy Manager (kontrolliert den Zugriff auf Systemressourcen)<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 169 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicheres Ausführen von Java Applets in Sand Box<br />
Sand Box:<br />
• Kein Zugriff auf das lokale Dateisystem<br />
• Keine Netzwerkverbindungen<br />
– (außer zum Web-Server-Host)<br />
• Bedingter Zugriff auf Systemfunktionen (System.exit() )<br />
• Kein Zugriff auf lokales Clipboard<br />
• Bedingter Zugriff auf <strong>Systeme</strong>igenschaften und deren Veränderung<br />
Neue Konzepte:<br />
• Signierte Applets<br />
• Andere Security-Manager<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 170 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
Java Applets bei Client<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Bestehend Sicherheitsprobleme:<br />
- Deniyl-of-Service Atacken (Applet verursacht zu starke Last)<br />
- hidden Communication (Kommunikation zu einem Angreifer,<br />
DNS manipulations)<br />
- illegale Package Names<br />
- Angriffe auf den Class Loader<br />
- Angriffe Security Manager<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 171 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitsarchitektur<br />
• Sicherheitsarchitektur bzw. Sicherheitsinfrastruktur<br />
• Bestandteil einer Gesamtarchitektur, der die Sicherheitsstrategie<br />
durchsetzt<br />
• Realisierung der Verwaltung der sicherheitsrelevanten Informationen<br />
und Konzepte<br />
• Zugangskontrolle<br />
• identifiziert und authentifiziert Benutzer<br />
• Zugriffskontrolle<br />
• erlaubt Zugriff auf Daten nur <strong>für</strong> berechtigte Benutzer<br />
• Firewalls sind eine spezielle Form der Zugriffskontrolle<br />
• Kommunikationssicherheit / Kryptographie<br />
Zugangskontrolle Zugriffskontrolle auf Prozesse und Daten<br />
Kommunikationssicherheit<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 172 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sicherheitsarchitektur<br />
Sicherheitsarchitektur bzw. Sicherheitsinfrastruktur<br />
• Bestandteil einer Gesamtarchitektur, die die Sicherheitsstrategie durchsetzt<br />
• Realisierung der Verwaltung der sicherheitsrelevanten Informationen und Konzepte<br />
Zugangskontrolle identifiziert und authentifiziert Benutzer<br />
• Zugriffskontrolle erlaubt Zugriff auf Daten nur <strong>für</strong> berechtigte Benutzer<br />
Firewalls sind eine spezielle Form der Zugriffskontrolle<br />
Kommunikationssicherheit durch sichere Kommunikationsprotokolle<br />
• Einsatz kryptographischer Verfahren<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 173 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
Firewalls<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Dual-Homed Firewall<br />
• ziemlich sicher, aber relativ inflexibel<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 174 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
Firewalls<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Sceened-Host Firewall<br />
• Einige Dienste werden direkt durchgestellt, andere über den Application Proxy<br />
• größere Flexibilität, bei unsachgemäßer Handhabung größere Risiken<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 175 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
Risiken:<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Firewalls: Risiken und Grenzen<br />
• Korrekte Konfiguration eines Firewalls benötigt detaillierte Kenntnisse<br />
– Bedrohungs- und Gefahrenpotential<br />
– Interne Netzinfrastruktur und gewünschte Anwendungsprofile<br />
• Kontinuierliche und sorgfältige Administration erforderlich<br />
– Spezieller Verantwortlicher (Chief Security Officer – CSO) wäre erforderlich<br />
• Teilweise trügerische Sicherheit<br />
– Keine Absicherung gegen Angriffe aus dem internen Netz<br />
– Firewalls decken nur einen Teil der erforderlichen Kontrollen ab<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 176 <strong>eCommerce</strong> Sommersemester 2008
2 Grundlagen<br />
2.6 Sicherheit<br />
<strong>eCommerce</strong> <strong>Systeme</strong><br />
Firewalls: Risiken und Grenzen<br />
Grenzen:<br />
• Keine Virenabwehr, i.d.R. keine semantische Prüfung der Daten<br />
• Kein Schutz gegen Tunneling (verpackte und verschlüsselte Nutzdaten)<br />
– Filterregeln eines Firewalls können umgangen werden<br />
– z.B. auch Tunneling von IPv6 über IPv4<br />
• Berücksichtigung mobiler Endgeräte<br />
– lokale IP-Adresse aus externem Netz als internes Gerät ?<br />
• A-Posteriori Stopfen von Löchern<br />
– nur bekannte Sicherheitslücken können geschlossen werden<br />
File: <strong>eCommerce</strong> 2 Prof. Dr. A. Speck CAU Kiel<br />
Folie 177 <strong>eCommerce</strong> Sommersemester 2008