REFERAT-MenüDeutschGeographieGeschichteChemieBiographienElektronik
 EnglischEpochenFranzösischBiologieInformatikItalienisch
 KunstLateinLiteraturMathematikMusikPhilosophie
 PhysikPolitikPsychologieRechtSonstigeSpanisch
 SportTechnikWirtschaftWirtschaftskunde  



ECommerce

Vorwort



Begründung der Themenwahl

Wir wählten dieses Thema aufgrund unseres persönlichen Interesses für das Zukunftsmedium Internet und aufgrund der großen Wichtigkeit, die diesem Medium im Handel der nahen Zukunft zugesprochen wird.


Zusammenfassung des Themeninhalts:

Dieses Thema umfaßt mehr Information als wir je bewältigen könnten. Darum müssen wir uns sehr stark einschränken. Wir werden trotzdem versuchen einen kurzen Überblick über das gesamte angebotene Spektrum des Electronic Commerce zu geben. Dieser Versuch ist aufgrund der Kurzlebigkeit der Computertechnik im vorhinein zum Scheitern verurteilt, wir wollen uns aber nicht nachsagen lassen wir hätten es nicht wenigstens versucht.

Das gesamte Thema splittern wir in 3 Teilbereiche auf:

Grundwissen zu Electronic Commerce (bearbeitet von Rudolf Pfligl)



Sicherheitsaspekte zu Electronic Commerce bearbeitet von Thomas Gerersdorfer)

Praktisches Beispiel zu Electronic Commerce in Form eines Warenkorbes (bearbeitet von Johannes Neugschwentner)


Ziel unseres Projekts:

Wir wollen uns zu diesem Thema gut informieren und unser Wissen auf einer Web-Site präsentieren. Diese Web-Site soll als Zielgruppe vor allem Schüler ansprechen die als junge Ge-neration in der Zukunft wohl am meisten mit diesem Thema konfrontiert werden wird.

Zusammenfassend ist es unser Ziel eine informative, grafisch gut gestaltete und übersichtliche Web-Site mit praktischen Beispielen zu erstellen.


Danksagungen:

Bei großen Projekten kommt es fast immer vor, daß Menschen mithelfen, die nicht direkt zu Projektmitarbeitern gezählt werden. Trotzdem haben solche Personen oft maßgeblichen Anteil am Erfolg des Projekts.

Zuerst möchten wir vor allem unseren Projektbetreuer Herrn Prof. Mag. Wilfried Gieber danken, der uns immer mit Rat und Tat zur Seite gestanden hat. Als Anfänger der Programmiersprache ASP steht man immer wieder vor kleinen Problemen, deren Lösung oftmals professioneller Hilfe bedarf. In diesem Sinne bedanken wir uns auch bei Herrn Gerhard Wilhelms, der uns per E-Mail auf die Programmiermöglichkeit via ASP hinwies und bei !rga/strontium901 (er wollte seinen richtigen Namen nicht nennen).


Eigenständigkeitserklärung

Hiermit bestätigen alle beteiligten Projektmitglieder, daß nur die angeführten Hilfsmittel verwendet wurden und das Pojekt in eigenständiger Arbeit durchgeführt wurde.




Prozessdokumentation



Timer


Tätigkeit

Soll

Bearbeiter

Ist

Formulierung des Themas


GT, NJ, PR


Abgabe der Themenformulierung im Sekretariat


GW


Gemeinsames Layout bestimmen


GT, NJ, PR


Mappen-System festlegen


GT, NJ, PR


Softwarebeschaffung


GT


Wissen über ASP


NJ


Wissen über Html


PR


Material über Sicherheit


GT


Wissen über vorhandene Warenkörbe


NJ


Allgemeines Wissen über E-Commerce


PR


Einkaufsseiten einbinden


NJ


Home Page-Grundgerüst erstellen


PR


Interfaces für Arbeiten der anderen Gruppenmitglieder vorbereiten


PR


Material über Sicherheit in Html schreiben


GT


Einbinden von E-Commerce-Infos


PR


Zusammenfassung über Sicherheit


GT


Zusammenfassung über ASP und VB-Skript


NJ


Zusammenfassung über Html


PR


Zusammenfassung über E-Commerce


PR


Browser festlegen


GT, NJ, PR


Über Bereiche der anderen Gruppenmitglieder Bescheid wissen


GT, NJ, PR


Fehler korrigieren


GW, GT, NJ, PR


Mehrmaliges Testen


GW, GT, NJ, PR


Vorbereitung der Präsentation


GT, NJ, PR


Fertigstellung der Projektarbeit


GT, NJ, PR




GW .. Prof. Gieber Wilfried

GT Gerersdorfer Thomas

NJ .. Neugschwentner Johannes

PR .. Pfligl Rudolf

Arbeitsprotokoll (Gerersdorfer Thomas)


Datum

Tätigkeiten

Stunden-

aufwand


Materialbeschaffung im Internet

1h


Materialbeschaffung im Internet

1h


Materialbeschaffung im Internet, Beginn mit Projekt

2 ½h


Genaue Zielformulierung

½h


Bearbeitung des Materials

2h


Bearbeitung des Materials, Gemeinsames Layout bestimmt

1½h


Materialbeschaffung im Internet

1h


kleine Anderung am Layout

¼h


Anfrage um Software per E-Mail, Informationen aus dem Buch "E-Commerce" herausgeschrieben

1 ½h


Bankbesuch um Software

½h


Abschluß des Kapitels Geldkarte

1h


ganz genaue Struktur gemeinsam mit Gruppenmitglieder zusammengestellt

Informationen aus dem Buch bearbeitet

2h

2h


Bearbeitung des Materials

2h


Kapitel Sicherheit im Grundriß fertiggestellt und in die Projektdatei eingefügt

1 ½h


Weiterbearbeitung der Lektüre

2h


weitere fertiggestellte Texte in die Projektdatei eingefügt und Weiterbearbeitung der Lektüre

2 ½h


Weiterbearbeitung der Lektüre

1½h


Erstellung des Arbeitsprotokolls am Computer, Eintragung der Arbeiten von den Notizen in das Arbeitsprotokoll

durchlesen aller noch nicht durchgearbeiteten Textquellen (25 Html-Dateien) und Bearbeitung dieser Texte

½h


4 ½h


Kürzung des gesamten Textes (55 Word-Seiten) auf 28 Seiten. Intensives Durchlesen des gesamten Textes bzw. Auseinandersetzung mit dem Text. Heraussuchen passender Grafiken zum Thema Sicherheit

7h


Zusätzliches Durchlesen des gesamten Textes, bilden einer sinnvollen Reihenfolge des Textes

5h


Fehler in der bisherigen Projektdatei ausgebessert (Formatierungen, Schreibfehler)

2h


Einfügen des Sicherheitsteiles in die Projektdatei, weiteres formatieren des Textes

1 ½h


Download des Programmes Pretty Good Privacy

½h


Überarbeitung des Materials über Sicherheit

1½h


Überarbeitung des Materials über Sicherheit

1h


Überarbeitung des Materials über Sicherheit

1h


Überarbeitung des Materials über Sicherheit

1h


Überarbeitung des Materials über Sicherheit

1h


Überarbeitung des Materials über Sicherheit

1h


Überarbeitung des Materials über Sicherheit

3h


Zusammenfügen des Maturaprojektes, Formatierungsanpassungen der verschiedenen Dokumente und Schreiben einer Zusammenfassung des Projektes

Durchsuchen des gesamten Textes nach eventuellen Fehlern (Formatierungen, Rechtschreibung, )



3h

3h



Überarbeitung des Textes mit Fußnoten

2h


letzte Besprechung und ausdrucken

3h


Arbeitsprotokoll (Neugschwentner Johannes)


Datum

Tätigkeiten

Stunden-

aufwand


Übersicht über E-Commerce verschaffen, Begriffsklärung; Übersichtsblatt Maturaprojekt.doc; Logo ausgewählt

2 ½h


Index.html (Übersicht über Stand der Dinge bei Informationsbeschaffung - auf Diskette Herrn Prof. Gieber abgegeben)

5h


Index.html fertigstellen

1 ½h


Java professionell lesen

1 ½h


Java professionell lesen

1h


Java professionell lesen

2h


Java professionell lesen

2h


Java professionell lesen

2h


Java professionell lesen

1 ½h


Java professionell lesen

2h


Java professionell lesen

2h


Java professionell lesen

2h


Java professionell lesen

2h


Java professionell exzerpiert: Kapitel 1

1h


Java professionell exzerpiert: Kapitel 2 - Kapitel 3.1.2

1 ½h


Projektstruktur händisch schreiben

2h


Projektstruktur am Computer schreiben

½h


Besprechen der Projektstruktur mit Hr. Prof. Gieber

½h


Daten aus time.txt in Arbeitsprotokoll.doc schreiben

½h


Suchen von ASP-Informationen im Internet

½h


Lesen des Kapitels Das JDBC-API

½h


Bitte um Hilfe bei Autoren von "Java professionell"

½h


Lesen von Antworten auf "Hilfebriefe", Suche im Internet nach Java Scripts, Java etc.

1 ½h


Anfangen zu lesen von Shopping Cart ASP Component (Suche im Internet), Suche im Internet nach Drumbeat Keycracks (gefunden auf astalavista.box.sk)

1 ½h


Suche nach Verwendung von Microsoft ASP und Access im Internet,

wiederholtes Lesen von Java professionell (S 20 - 30)

1h


Beratung mit GW (Genaues Befolgen des Scripts von GW)

Installation von Drumbeat

1h


Befolgen des Scripts von GW (idc, hdx)

2h


Allgemeines über ASP im Internet gesucht, Besprechen eines Beispiels mit GW, VB-Script-Referenz von GW erhalten

4 ½h


Buch von Reisinger holen, Installieren von NT Option Pack 4.0

½h


ASP-Buch bis S.65 gelesen

2h


ASP-Buch bis S. 105 (Formulare)

1 ½h


Suche nach Hintergrund für Homepage im Internet, Beispiele auf http://www.asp.comzept.de 07.12.99 weitergemacht

1 ½h


ASP-Buch bis S. 136 (CSS)

1h


ASP-Buch bis S. 175 (DHTML, XML, Überfliegen des Kapitel Online Marketing)

1h


ASP-Buch bis S. 193 (Einführung in VB-Script), Anwendungsversuch von CSS und VB-Script

1 ½h


Einführungsbeispiele zu VB-Scipt weitergemacht, Lesen des Quellcodes von http://www.hackers.com, für ein mögliches Design der Homepage

2 ½h


ASP-Buch bis S. 203 (Formatierungen)

½h


ASP-Buch bis S. 259 (VB-Script Grundlagen (Response, Request)

3h


Background, Logos, Buttons, Borders, Fonts im Internet gesucht

3 ½h


ASP-Buch (Shopping Cart) gelesen

2 ½h


ASP-Buch (Kapitel 8, Arbeiten mit Datenbanken)

Installieren des SQL-Servers auf wn-am105; Verbindung mit Server in der SQL Management Console hergestellt + Dokumentation

3 ½h


ASP-Buch (Kapitel 5) gelesen

2h


Kap 5 Sessions (teilweise Kapitel 8), Erneutes Installieren des SQL Servers + Versuch der Herstellung einer Verbindung mit der Datenbank

3h


Versuch die Funktionsweise des Shopping Carts praktisch zu testen - die Verbindung mit der ACCESS, Visual InterDev gelesen (Kapitel 9)

2h


Default.asp in Grundzügen erstellt

8h


Default.asp bearbeitet (Probleme gelöst), Versuche mit artikel.asp

9h


Artikel.asp fertiggestellt, Xartikel.asp bearbeitet

6h


Xartikel.asp fertiggestellt

1h


Funktionalität von Warenkorb.asp überlegt und angefangen

1h


Warenkorb.asp ausgebaut

1h


Fehler in Warenkorb.asp beseitigt und andere Fehler bearbeitet

2h


Warenkorb.asp theoretisch fertiggestellt

9h


Letzte Fehler in Warenkorb.asp beseitigt

4h


Xartikel.asp und Bestellen.asp bearbeitet

6 ½h


ASP auf PCs in der Schule getestet

1 ½h


Bestellen.asp bearbeitet

2h


Bestellen.asp bearbeitet Fortschritt: CASES Strings in Kommata setzen

3h


Bestellen.asp bearbeitet

1 ½h


Fehler in Bestellen.asp beseitigt

5h


Fehlerbehebung + weiterarbeiten an bestellen.asp

4 ½h


Weiterarbeiten an bestellen.asp

2h


Style.inc erstellt

3h


Style.inc bearbeitet, Design von bestellen.asp, Design von Warenkorb

2h


Homepage-Design

3h


Fehler in Bestellen.asp bearbeitet (persönliche Daten anzeigen), "Corporate-Design" der Formulare in bestellen.asp bearbeitet

8h


Dokumentationen geschrieben

8h


Gesamte Homepage upgeloadet und Pfade gesetzt, Kleinigkeiten am Design der Gesamt-HP-Startseite und styles.inc

2h


Arbeitsprotokoll (Pfligl Rudolf)


Datum

Tätigkeiten

Stunden-

Aufwand


SELFHTML von der Webseite http://www.teamone.de/selfhtml/ gelernt und Zusammenfassung mitgeschrieben

2h


SELFHTML mit Zusammenfassung

1h


SELFHTML mit Zusammenfassung

1h


SELFHTML mit Zusammenfassung

1h


Formulierung des Themas + Timer erstellt

3h


Gemeinsames Layout (Schriftart, Seiteneinrichtung, ) bestimmt

1h


SELFHTML mit Zusammenfassung

1h


SELFHTML mit Zusammenfassung

1h


Mappensystem festgelegt + Deckblatt und Titelblatt entworfen

1 ½h


SELFHTML mit Zusammenfassung

1h


E-Commerce Buch exzerpiert

1h


SELFHTML mit Zusammenfassung, CyberCash- und
E-Commerce-Datei bearbeitet

1h


SELFHTML mit Zusammenfassung

1h


CyberCash- und E-Commerce-Datei ausgedruckt und exzerpiert

3h


SELFHTML mit Zusammenfassung

1h


SELFHTML mit Zusammenfassung

1h


SELFHTML gelernt und Struktur (Zielformulierung) überlegt

2h


Struktur (Zielformulierung) des Projektes fertiggestellt

2h


Informationen für Einleitungsteil von E-Commerce und
Informationen über Online Marketing erfaßt

1h


SELFHTML mit Zusammenfassung

1h


SELFHTML mit Zusammenfassung

2h


SELFHTML mit Zusammenfassung

1h


Text über Definition E-Commerce, Zahlungssysteme und Online-Marketing verfaßt

3h


Text über Definition E-Commerce, Zahlungssysteme und Online-Marketing verfaßt

3h


Diagramme der geschichtlichen Entwicklung von E-Commerce

1h


Text über Homebanking und Zahlungssysteme fertig gemacht

1h


Gesamtes Material über E-Commerce in eine Datei zusammengefaßt

2h


Stand vom 24.11.1999 wiederhergestellt

2h


Background, Border, Buttons, und Schriftart für Homepage im Internet gesucht

3h


Text über Zahlungssysteme verbessert und eingefügt

1 ½h


Homepagegestaltung (Überschrift auf Startseite)

1h


Homepagegestaltung (Überschrift + Frame)

2h


Homepagegestaltung (Hintergrundbilder + Links)

2h


Überarbeitung der gesamten Informationen über E-Commerce

1h



Text über Sicherheit formatiert, geordnet und ausgedruckt

2h


Quellenangaben hinzugefügt

1h


Überarbeitung des Textes über E-Commerce (PS)

1 ½h


Zeitungsartikel gesucht und exzerpiert

1h


Verbesserung des Textes über E-Commerce

1h


Im Internet Informationen über E-Commerce gesucht, Text über E-Commerce überarbeitet

2 ½h


Text über E-Commerce überarbeitet

1 ½h


Text über E-Commerce überarbeitet

2h


Text über E-Commerce überarbeitet, Adressenverzeichnis erstellt

2h


Zusammenfügen des Maturaprojektes, Formatierungsanpassungen und Schreiben einer Zusammenfassung des Projektes, Gestaltung der Homepage (Formatierung des Inhalts)

5h


Formatierung der gesamten Projektdatei

4h


Ausdrucken der Projektarbeit, Arbeitsprotokolle eingefügt, Zusammenfassung für gesamtes Projekt geschrieben, Texte in Homepage eingefügt, Aufbau der Homepage (Links usw.)

6h


Letzte Besprechung und ausdrucken der Projektarbeit

3h


Ergebnisdokumentation



Electronic Commerce


Definition von Electronic Commerce

Alle sprechen von Electronic Commerce und jeder meint etwas anderes. Unter Electronic Commerce versteht man im allgemeinen einen Überbegriff für Formen des elektronischen Datenaustauschs, die bei einer Geschäftsabwicklung entstehen. Beispiele sind Elektronische Märkte, Online-Systeme, EDI (Electronic Data Interchange ist eine Form der Kommunikation, bei der kommerzielle und technische Daten plattformunabhängig zwischen Computern verschiedener Geschäftspartner ausgetauscht werden), E-Mail oder Homebanking. Bei all diesen Formen ist die Gemeinsamkeit der elektronischen Übertragung von Daten immer gegeben.


Electronic Commerce - wie wir den Begriff verwenden wollen - ist jede geschäftliche Transaktion, die per Telekommunikation durchgeführt wird. Dazu gehören jedoch auch das Angebot, Werbung, Informationen über die angebotenen Waren und Dienstleistungen sowie die Bestellung und Lieferung.

Aber auch die Abwicklung der Bezahlung wird beim Electronic Commerce auf eine andere Art wie bei der herkömmlichen Geschäftsabwicklung. Die elektronischen Zahlungssysteme werden auf jeden Fall großen Einfluß darauf nehmen, wie sich die kommerzielle Nutzung des Internets in Zukunft entwickelt. Sollte sie steigen wird sich Electronic Commerce sicher stark auf das private und öffentliche Leben auswirken. Das Internet könnte sich zu einem wichtigen Kommunikationsmedium, wie es das Telefon und das FAX schon sind, entwickeln.


Internet Shopping

Das Einkauf über das Internet ist ein völlig neuer Vertriebsweg, der die klassischen Vertriebswege zwar nicht ablösen aber wahrscheinlich ergänzen wird, und schon jetzt immer populärer wird. Vorteile bei der Geschäftsabwicklung über das Internet sind die Schnelligkeit, Effizienz, günstige Kosten, ständige und weltweite Erreichbarkeit, sowie direktes und auf die einzelne Person bezogene Geschäfte zwischen Anbieter und Käufer. Möglichkeiten des Internetshoppings bei Kaufhäusern, PC Anbietern, Pizzabringdiensten und vor allem bei Buch- und Musikgeschäften sind schon vorhanden.


Um jedoch mit den herkömmlichen Vertriebswegen konkurrieren zu können, muß zuerst die Sicherheit im Internet gegeben sein (siehe Kapitel 2.8 Verschlüsselung). Ebenso muß die Frage nach dem geeignetsten Zahlungssystems, bei der die Kreditkartenzahlung oder die Zahlung mit digitalem Geld als Lösung sehr nahe stehen (siehe Kapitel 2.7 Zahlungssysteme), beantwortet werden.


Besonders beim Zahlungsverkehr im Internet ist noch keine ideale Lösung gefunden worden. Probleme ergeben sich weil es im Bereich der Zahlungsmethoden verschiedene Anforderungen, Möglichkeiten und Randbedingungen gibt, aber auch schon bereits bestehende Zahlungssysteme in unterschiedlichen Einsatzbereichen verwendet werden. Weiters ist auch noch wichtig, daß hier verschiedenste Fachgebiete (Kreditwirtschaft, Recht, Computertechnik und Kryptographie) im Zusammenhang miteinander stehen.


Homebanking mit dem PC

Da sowohl beim Homebanking und beim Shopping mit dem PC Paßwörter Kontozugangsdaten, PINs (Personelle Identitätsnummer), TANs (Transaktionsnummer), das digitale Geld und die Kreditkartennummern auf dem Computersystem gespeichert sind und über das Internet transportiert werden, halte ich es für notwendig, die Begriffe des Datenschutzes und der Datensicherheit anzuführen:


Datenschutz

Geschützt werden nicht die Daten, sondern jede einzelne Person vor Mißbrauch ihrer Daten.


Datensicherheit

Als Datensicherheit bezeichnet man Maßnahmen, die Daten vor unerwünschten Zugriffen und vor zufälligen oder absichtlichen Veränderungen bzw. Zerstörungen zu bewahren.

Im Hinblick auf Electronic Commerce ist hier zu prüfen, inwieweit die Techniken und Übertragungswege der E-Commerce-Anwendungen Schutz vor unberechtigten Zugriffen und Manipulation der Daten bieten oder nicht. Um die Daten im Internet effektiv schützen zu können, ist es notwendig, den Ablauf und die Schnittstellen einer Transaktion genauer zu betrachten. Dabei zeigen sich drei wesentliche Angriffspunkte:


am Zielserver

während der Übertragung

am PC des Kunden.


Um eben diese potentiellen Schwachpunkte zu überwinden, wurden für sie Schutzmechanismen und Technologien entwickelt.


Schutz des Servers

Dabei geht es darum, fremde, nicht befugte Personen vor unerlaubten Zugriffen und das Eindringen von Fremdprogrammen zu verhindern. Dafür werden sogenannte Software-Firewall-Systeme eingesetzt.


Übertragungssicherheit

Um eine Information oder Transaktion, die im Internet meist über eine Vielzahl von verschiedenen Servern läuft, vor Manipulationen zu schützen, wird diese vor dem Absenden verschlüsselt. Dabei sollten standardisierte Verfahren, wie RSA (Rivest, Shamir, Adleman - die Erfinder dieses Verfahrens) und DES (Data Encryption Standard) verwendet werden (siehe 2.8.6 Verschlüsselungsverfahren).

Zunächst eine kurze prägnante Erklärung: Um die Information wieder lesbar zu machen, wird ein Schlüssel zum 'Entsperren' benötigt. Theoretisch bestünde die Möglichkeit, entweder das Verfahren selbst anzugreifen oder alle Möglichkeiten für den Schlüssel auszuprobieren. Durch die Wahl von hohen Schlüssellängen kann man die Möglichkeit, den Schlüssel zu errechnen, praktisch ausschließen.


Schutz des Kunden-PCs

Der Kunden-PC ist mit Abstand das schwächste Glied und am schwierigsten zu schützen. Ein an das Internet angeschlossener PC bietet einem Hacker eine Fülle von Angriffspunkten. Man kann von einem Internetbenutzer nur sehr schwer verlangen, daß er einen Überblick über die Vorgänge behält, die sich beim Laden der verschiedenen Seiten auf seinem PC abspielen.


Standardprogramme

Standardprogramme wie zB der Netscape Navigator oder Internet Explorer weisen oft eine Vielzahl an Sicherheitslöchern auf, die von den Herstellern Stück für Stück wieder gestopft werden müssen. So ist zB im Juni 1999 so ein Sicherheitsloch im Netscape Navigator bekanntgeworden, das es ermöglichte, Zugriff auf die Festplatte des PC-Besitzers mit Online-Anschluß zu erhalten und darauf Daten auszuspionieren. Ein weiteres Sicherheitsloch, das serienmäßig im Internet Explorer eingebaut ist, wurde in einem Beitrag des ARD-Wirtschaftsmagazins Plusminus von Hackern vorgeführt. Man hatte die Rechner von nichtsahnenden Usern durch ActiveX ferngesteuert. Klickt ein Online-Banking-Kunde die entsprechende Internet-Seite an, wird ein ActiveX-Programm im PC geladen, das wiederum eine Finanzverwaltungssoftware aufruft. Die Manipulationssoftware füllt dann das entsprechende Überweisungsformular aus, und der Betrag wird bei der nächsten Sammelüberweisung des PC-Besitzers unbemerkt mit überwiesen.

Um eine Transaktion von einem Kunden-PC aus gut genug sichern zu können, sollten folgende Rahmenbedingungen erfüllt werden:


Sichere Identifizierung des Nutzers

Gewährleistung der Authentität der Daten

Sichere Verschlüsselung von Daten


Identifizierung des Nutzers

Um in einem Netz Transaktionen abwickeln zu können, ist es unabdingbar, daß der Absender einer Information eindeutig identifiziert werden kann. Im Homebanking-Bereich wird dazu das sogenannte PIN/TAN Verfahren eingesetzt. Der Nutzer erhält von seiner Bank eine persönliche PIN und eine Liste von nur einmalig gültigen TAN, die bei jeder Transaktion übermittelt werden. Die Sicherheit dieses Systems hängt weitestgehend vom Nutzer selbst ab, denn die PIN und die TAN-Liste darf niemals in fremde Hände gelangen, da sich derjenige sonst als Zugriffsberechtigter ausgeben könnte. Das Speichern von PIN und TAN auf dem Kunden PC, wie dies bei einigen Homebanking-Programmen bisher üblich war, ist zu vermeiden, da beispielsweise ein Virus diese Daten auslesen und an einen Dritten weiterleiten könnte.


Ein anderes Verfahren zur sicheren Identifizierung, welchem mit hoher Wahrscheinlichkeit die Zukunft gehören wird, ist das der digitalen Signatur (siehe 2.8.6 Verschlüsselungsverfahren).



Gewährleistung der Authentizität der Daten

Dabei geht es darum, zu garantieren, daß die Daten des Absenders, die beim Empfänger ankommen, auch diejenigen sind, die über das Internet geschickt werden. Denn jeder, der Zugang zu einem Knotenrechner (Rechner, die die Verbindungsstellen zwischen den verschiedenen Netzen bilden - siehe 2.8.3 Sicherheitsprobleme) bekommt, kann Informationen lesen und im schlimmsten Fall sogar verändern. Es könnte auch der Absender geändert werden. Das sollte durch sichere Verschlüsselungsverfahren verhindert werden, andererseits kommen auch sogenannte Hash-Verfahren zur Anwendung. Bei diesen Verfahren wird über jede Transaktion eine Hashsumme gebildet und diese mit den Transaktionsdaten zusammen verschlüsselt und an den Empfänger gesendet. Beim Empfänger wird nach der Entschlüsselung der Daten wiederum eine Hashsumme gebildet und mit der mitgesandten verglichen. Stimmen die beiden Summen überein, kann man davon ausgehen, daß die Daten unterwegs nicht manipuliert wurden.


Sichere Verschlüsselung von Daten

Es ist notwendig, Daten so zu verschlüsseln, daß es bei der Übertragung zu keinen ungewünschten Zugriffen oder Manipulationen kommen kann. Es muß also auch auf der Kunden-PC-Seite gewährleistet sein, daß Verschlüsselungsverfahren eingesetzt werden. Derzeit gelten Verfahren mit Schlüssellängen größer gleich 128 Bit als den diesbezüglichen Anforderungen genügend (siehe 2.8.6 Verschlüsselungsverfahren). Die Banken und Sparkassen sind derzeit dabei, ein Homebanking Computer Interface (HBCI) zu entwickeln, um so zeitgemäße Sicherheitsmechanismen und -methoden zu schaffen, welche den Mißbrauch der im Bereich des Homebanking eingesetzten Systeme verhindern. Neben der Pflicht, jede Nachricht zwischen Bank und Kunde mit einer digitalen Signatur zu versehen und der Möglichkeit, die Informationen mit dem Triple-DES (siehe 2.8.6 Verschlüsselungsverfahren) zu verschlüsseln, sieht das HBCI noch weitere Sicherheitsmaßnahmen vor. Auf Dauer sollen alle Sicherheitsfunktionen einer intelligenten Chipkarte übertragen werden. Dazu sollte ein kleines Kartenlesegerät neben dem PC stehen, das die Daten aus dem Rechner digital signiert und die digitalen Signaturen, die von der Bank kommen, prüft (siehe 2.8.8 Sicherheit bei der Geldkarte). Auch die Verschlüsselung übernimmt dann die Karte. Das HBCI ist somit auf jeden Fall sicherer als der Einsatz von PIN und TAN allein.


Problematik der Eingabe am PC

Es ist so, daß die über die Tastatur oder andere Eingabegeräte eingegebenen Daten vor der Durchführung einer Signatur und/oder einer Verschlüsselung in den Hauptspeicher des PC gelangen. An dieser Stelle könnte jederzeit ein Virus ansetzen, der die eingegebenen Daten (zB Kontonummern) abfängt und gegen eine andere Kontonummer austauscht.

Die Sicherheitslatte kann mit Softwarelösungen zwar sehr hoch gelegt werden. Hardwarebasierende Systeme, welche keine direkte Eingabe der Daten über eine direkte Tastaturverbindung zulassen, versagen ebenfalls. Zwar kann durch Speicherung von verschlüsselten persönlichen Daten, wie Private Key (siehe 2.8.6 Verschlüsselungsverfahren), auf bspw. Chipkarten ein unbefugtes Auslesen weitestgehend verhindert werden. Die Manipulation der Daten vor der Verschlüsselung in einer Smartcard kann durch einfache Smartcard-Lesegeräte jedoch nicht verhindert werden. Diese verbleibende Sicherheitslücke kann nur mit Hardware, die entweder ein völlig eigenständiges Gerät darstellt oder die direkt mit der Tastatur des PC verbunden ist, geschlossen werden. Dazu wurde der MeChip entwickelt (siehe 2.8.6 Verschlüsselungsverfahren). Ob das allerdings den finanziellen Aufwand und die komplizierte Beschaffung rechtfertigt, bleibt abzuwarten.


Geschichte des Electronic Commerce


Statistiken zur geschichtlichen Entwicklung

Die folgenden Grafiken zeigen die Ergebnisse verschiedener Umfragen unter Internet-Nutzern mit und ohne Einkaufserfahrungen im Internet. Diese Erkenntnisse basieren auf einer größeren Erhebung der IMRG (Interactive Media in Retail Group, http://www.imrg.org) in Großbritannien Anfang 1997 und lassen sich durchaus auf die aktuelle Situation in Deutschland und Österreich übertragen:1


Abb.1.: Akzeptanz bestimmter Zahlungsmethoden beim Einkauf im Internet2



Abb.2.: Wann werden elektronische Medien wichtig für den Handel?3


Abb.3.: Was wird am häufigsten Online gekauft und was wünschen sich Käufer?1



Abb.4.: Wieviel Prozent des Handelsvolumens werden im Jahr 2000 elektronisch umgesetzt?2


Abb.5.: Wieviel Prozent des Handelsvolumens wurden im Jahr 1997 elektronisch umgesetzt?1



Abb.6.: Wie oft haben Sie in den letzten 12 Monaten Online eingekauft?2


Abb.7.: Was halten Sie generell vom Einkaufen im Internet?1


Abb.8.: Würden Sie bei diesen Online präsenten Firmen auch Reisen buchen?

Viele Firmen sind schon aktiv und planen mit wohlbekannten Markennamen die Expansion in andere Geschäftsfelder. Kann eine solche Expansion erfolgreich sein?2

Entwicklung des Electronic Commerce (derzeitiger Stand)

Zwischen Europa und den USA sind die Unterschiede derzeit geringer als in den letzten Jahren. Im professionellen Bereich ist Europa weiter, was nicht darüber hinweg täuschen sollte, daß die Ausstattung der privaten Haushalte mit Internetzugang in den USA deutlich höher ist.1


Kaum eine Firma, die E-Commerce betreibt, schreibt schon schwarze Zahlen. Gründe dafür sind die enorm hohen Startkosten sowie Probleme im Vertriebssystem. Da die ganze Welt Konkurrenz darstellt fallen auch zusätzlich hohe Marketingkosten an. Es wird also noch zwei bis drei Jahre dauern bis in dieser Branche mit Gewinnen zu rechnen ist. Das beste Beispiel dafür ist Amazon.com (www.amazon.com), der weltweit größte Online-Buchladen, dessen Verluste sich im letzten Jahr auf 192 Mio. Dollar vervierfacht haben.2

E-Commerce ist vor allem dort erfolgreich, wo es sich um Produkte handelt, die mit Informationsgewinnung in Verbindung stehen. Aber auch Produkte die leicht zu beschreiben sind, haben gute Chancen. Das sind zB Bücher, CDs und Videos, aber auch Reise- und Medienprodukte. Durch die Einführung der Beratungsgebühr in den Reisebüros könnte das Internet auch in diesem Bereich immer interessanter werden. In der Textilbranche läuft das virtuelle Geschäft jedoch eher schlecht (zB Levi Strauss).

Die rechtlichen Probleme sind, trotz der Regelung der digitalen Unterschrift (E-Signature) und gewissen rechtlichen Rahmenbedingungen, noch nicht ganz gelöst. Auch von der EU werden daher große Bemühungen unternommen, die Rechtsaspekte zu harmonisieren. Die Zukunft des elektronischen Handels liegt jedoch nicht alleine im Verkauf von Produkten. Da sich der Verkauf im Internet für eher wenige, klar beschreibbare Produkte eignet, liegt auch eine große Chance im Aufbau eines Kundenbeziehungsmanagements. Das heißt, es werden für jeden Kunden spezielle Kundenprofile erstellt, auf deren Basis jeder Kunde individuell bedient werden kann. Dadurch können neue Kunden gewonnen und Stammkunden gehalten werden.3


Umsätze in Milliardenhöhe werden dem E-Commerce weltweit vorausgesagt. Doch es fehlt derzeit vor allem noch an der Akzeptanz in den Köpfen und an der Logistik. Ein positives Beispiel ist hier das französische Handelsunternehmen Cora. Es hat unter http://www.houra.fr einen Cybermarché ins Netz gesetzt. Über 50.000 Produkte und 1.500 Marken werden angeboten und die Lieferung erfolgt binnen 48 Stunden bis zur Haustür für ein Pauschale von 50 Franc (7, 62 EUR/ 104, 89 ATS).

Virtuelle Einkaufshäuser wie Cybermarché können vor allem für Klein- und Mittelbetriebe interessant sein. Große Konzerne haben nämlich genug eigene Kommunikationskraft um ihre Website bekannt zu machen. Für die kleinere und mittlere Betriebe übernimmt diese Funktion hingegen der Betreiber der Shopping-Mall im Internet.4

Kleine und mittlere Lieferanten von großen Handelsketten hatten bis jetzt noch hohe Kosten beim Einstieg in Electronic Commerce zu tragen. In Österreich gibt es zwar schon mit ECODEX eine standardisierte Form des Datenaustausches zwischen Unternehmen und ihren Großkunden. Für kleinere Firmen war jedoch der Einstieg in dieses System zu teuer.


Um den Verbrauchern die Möglichkeit zu geben, ihre Kaufkraft im Internet zu bündeln und so Preisnachlässe zu erzielen, hat das an der Easdaq in Brüssel notierte Wiener Internet-Unternehmen YLine (www.YLine.com) eine Kooperation mit dem E-Commerce Unternehmen Primus Power, einer Metro-Tochter, geschlossen. YLine bietet jedoch nicht nur Online-Shopping an, sondern auch Online Auktionen, Aktien- und Börseninfos sowie Online Brokerdienste. Ein ähnliches Konzept wie YLine verfolgt auch das niederländische E-Commerce-Unternehmen LetsBuyIt.com (www.LetsBuyIt.com). Via Internet können Kunden ihre Interessen bündeln und gemeinsam zu einem günstigen Preis einkaufen.1


Im Internet gibt es immer mehr Serviceleistungen, die den Konsumenten das Leben erleichtern. Sogenannte Software-Agenten (www.dealpilot.com, www.jango.com, www.vivendo.de) stellen für User Preisvergleiche zusammen und suchen im Web nach den besten Angeboten für ein gewünschtes Produkt. Der Kunde kann durch die Unterstützung eines sogenannten 'Bots' Geld sparen, obwohl eine Provision bezahlt werden muß. Die Käufer werden dann auf die Homepage des jeweils günstigsten Anbieters 'verlinkt'. Laut eines US-Computermagazins ermitteln solche Preisagenten aber auch oft falsche und veraltete Preise.2


E-Commerce unterliegt neben der Regeln der klassischen Vertriebskanäle auch noch neuen Gesetzmäßigkeiten. Den Konsumenten muß ein unterhaltendes Online-Erlebnis mit fortschrittlichem grafischen Design, Audio- und Videosequenzen sowie Katalog-Suchfunktionen geboten werden. Um ein zielgruppengerechtes Angebot zu schaffen sind genaue Analysen des Kaufverhaltens notwendig. Darüber hinaus kann man eine Webseite nicht nur mit einem PC anwählen, sondern auch mit WAP-Handys und in Zukunft auch mit Web-TV.3


Mit Hilfe des WAP (Wireless Application Protocol) kann man zum Beispiel die Zeitung, Kinoprogramme, Zugfahrpläne oder Konzertkalender auf das Handydisplay bringen.4 Darüber hinaus können nun auch Webseiten die in WML (Wireless Markup Language) programmiert sind, auf Mobiltelefon-Displays dargestellt werden. Die Übersetzung vom HTML-Format in das WML-Format soll bald automatisch erfolgen. Derzeit bietet in Österreich nur Mobilkom die neuen WAP-Handys an. Max.mobil und One werden aber in Kürze folgen.


Abschließend kann man zum Electronic Commerce bemerken, daß sich jeder der über das Internet kaufen oder verkaufen will, neu orientieren muß. Denn im Internet ist der Handel 24 Stunden am Tag möglich und potentielle Kunden sind auf der ganzen Welt vorhanden.











Der elektronische Marktplatz


Seit Ende 1996 beschäftigt sich die Geschäftswelt ernsthaft mit den neuen Kanälen des elektronischen Handels (Electronic Commerce).

Elektronische Plattformen sind:       - Internet

- der interaktive Fernseher

- Multimediastationen


Sie bieten kommerzielle Möglichkeiten wie Markenförderung, Verbreitung von Werbeinformationen, Online-Veröffentlichungen und elektronische Online-Geschäfte. Der elektronische Handel unterscheidet sich dennoch vom konventionellen Marketing und Handel. Es gibt nämlich keinen persönlichen Kontakt und der Endkunde kann direkt zum Hersteller gehen.


Ausschlaggebend für die rasche Entwicklung des elektronischen Handels sind Kombinationen von technologischen, ökonomischen und sozialen Faktoren:


Massenhafte Verfügbarkeit von Computern in Form von PC, Mobiltelefonen, Set-Top-Box ("Gemeint sind Geräte, die an den Fernseher angeschlossen werden können und damit den Fernseher internettauglich machen. Mit der breiten Verfügbarkeit von Set-Top-Boxen wird es gelingen, eine große Gruppe von Menschen für das Internet zu begeistern, auch wenn sie keinen Computer haben und aus den verschiedensten Gründen zukünftig auch keinen Computer haben wollen."2 ), sowie die wachsende Zahl von Kommunikationsgeräten am Arbeitsplatz und zu Hause.

Wachsende Zahl von lokalen Netzen.

Fallende Kosten für nationale und internationale Telefonate.

Auftauchende Online-Geschäftsmodelle (schnelle Rückläufe, minimale Unterhaltskosten, Maximierung der Profitmarken).


Der Marktplatz Internet

Das Internet bietet vielfältige Dienste, welche zu unterschiedlichen Zeiten und bei verschiedenen Aktionen am Handelsprozeß beteiligt sind.

Grundsätzliche Formen der Geschäftstätigkeit im Internet:

Verkaufsvorbereitung und Absatzförderung: Interesse des Kunden durch Produktinformationen fördern.

Verkaufsdurchführung: Angebots-, Bestell- und Rechnungswesen

Lieferung: Bereithaltung, Bereitstellung und Auslieferung von Waren.

Verkaufsnachbereitung (After Sales): Serviceinformationen und Hilfe bei der Bedienung komplexer Produkte.


Marktstatistiken

Verschiedene internationale Forschungsberichte zeigen, daß das Internet und andere elektronische Medien stark wachsen. Im deutschen Sprachraum sind die Fortschritte nicht so rasant und auch nicht so gut dokumentiert wie in den USA und Großbritannien.


Die GVU (http://www.gvu.gatech.de) eine gemeinnützige amerikanische Organisation, hat in einer Analyse Vergleiche zwischen europäischem und amerikanischem Nutzerverhalten aufgestellt. Dieser Vergleich ist dann wesentlich, wenn Angebote vor allem für den Export geeignet sein sollen. Der folgende Vergleich soll Unterschiede nach verschiedenen Zielgruppen (Altersgruppen, Geschlecht und Herkunft) aufzeigen.1


Vergleich nach der Herkunft

USA

Europa

Oft

7, 50


Manchmal



Selten



Nie



Weiß nicht

6, 38

6, 15

Nicht benutzt

2, 39

9, 50

Abb.9: Wie oft werden Shopangebote im Internet genutzt?2



Vergleich nach dem Alter




> 50

Oft

0, 99

9, 43

7, 97

6, 10

Manchmal

9, 90




Selten





Nie





Weiß nicht



5, 76

3, 90

Nicht benutzt

3, 96

3, 95

2, 93

2, 37

Abb.10: Wie oft werden Shopangebote von bestimmten Altersgruppen genutzt?3



Vergleich nach dem Geschlecht

Männer

Frauen

Oft

8, 08

6, 92

Manchmal



Selten



Nie



Weiß nicht

6, 01

7, 17

Nicht benutzt

2, 98

3, 13

Abb.11: Wie oft werden Shopangebote im Internet genutzt?4


Online-Marketing


Definition: Was ist Online-Marketing?

Online-Marketing ist eine Form der interaktiven, kommerziellen Kommunikation und nutzt überwiegend das Word Wide Web. Merkmale gegenüber dem herkömmlichen Marketing sind:


Verbreitung von Werbebotschaften mittels vernetzter Systeme

Globale Verbreitung der Botschaften

Selektives Abrufen der Botschaften durch die Beworbenen (Konsumenten)

Ständige Verfügbarkeit der Werbeinformationen

Möglichkeit der Übertragung komplexer Inhalte

Möglichkeit der Nutzung multimedialer Elemente (Sound, Video, Grafik usw.)

Geringere Streuung und gezieltere Vermittlung


Vor- und Nachteile des Online-Marketings

Kenntnisse über Vor- und Nachteile, sowie die richtige Anwendung dieser Kenntnisse können einen Wettbewerbsvorsprung verschaffen.


Vorteile:

Informationsvorsprung: Sofortiges präsentieren von Neuheiten

Transparenz des Angebotes

Zielgruppenauswahl ist kostengünstiger und exakter

Kommunikation mit Konsumenten ist direkter und gezielter möglich

Flexibilität steigt

Produktionskosten für Werbung vermindern sich

Umfangreicheres Service nach dem Verkauf mit geringerem Aufwand

Günstigeres, weltweites Marketing

Technologische Demonstrationen wirken attraktiver


Nachteile (meist wenn nur Online-Verkauf betrieben wird):

Marken können sich nicht etablieren

Globale Massenbotschaften nicht möglich

Zielgruppen wie Senioren und Kleinkinder sind derzeit nicht erreichbar

Nicht alle Produkte sind für den elektronischen Handel geeignet


Produktmarketing

Das Produktdesign kann auf die Chancen des Online-Marketings abgestimmt werden. Ideale Produkte für das Internet und für den Verkauf über elektronische Shops werden dadurch geschaffen. 4 Bereiche sind zu beachten:

Das Produkt

Der direkte Kontakt zwischen Konsument und Hersteller erlaubt eine feiner abgestimmte Bedarfserfüllung. Das multimediale Anbieten erlaubt den Vertrieb von speziellen Produkten (komplexer Objekte), hochwertigen Waren und ausdifferenzierten Angeboten.


Der Preis

Durch Globalisierung sind Standort und Logistikzentren im Verhältnis zum Konsumenten optimaler zu plazieren und somit ist eine individuellere Preisgestaltung möglich.


Die Plazierung

Mit geringen Mitteln ist ein weltweites Ansprechen der Konsumenten realisierbar.


Die Werbung

Die Werbung wird interaktiver, kommunikativer und unterhaltende Elemente lassen sich leichter kombinieren. Ebenso steigt der Wirkungsgrad bei der Zielgruppenfokussierung und bei der Kombination von Sponsoring, Werbung und Promotionaktionen.


Die Online-Checkliste

Anhand einer Online-Checkliste läßt sich feststellen, ob und wie Online-Marketing erfolgreich sein kann. Es sind jedoch folgende Grundregeln für die erfolgreiche Plazierung von Produkten zu beachten:

Das Produkt sollte auch im klassischen Vertriebsweg erfolgreich sein.

Die Produktbeschreibung sollte einfach und mit wenigen Sätzen darstellbar sein.

Bei emotionell starken Produkten wird eine genaue Darstellung benötigt.


Beispiel der Online-Checkliste

Eignung des Produktes/der Produktgruppe für den elektronischen Handel:

Sehr gut

5 Punkte l l l l l

Gut

3 Punkte l l l

Mäßig

1 Punkt l

Punkte

Marktforschung ergibt
großes Marktpotential

Marktforschung ergibt mittleres Potential

Keine Marktforschung oder unsichere Akzeptanz


Produkt für Haushalte mit hohem Einkommen

Produkt für Haushalt mit mittlerem Einkommen

Produkt für Haushalte mit niedrigem Einkommen


Produkt kann mit 1 Grafik und 1 Text leicht erklärt werden

Produkt muß mit mehreren Bildern oder Bewegtbildern und viel Text erklärt werden

Produkt ist nur mit Video- und Soundtechniken oder persönlich erklärbar


Es bestehen positive Verkaufsverfahren im Einzelhandel oder Direktverkauf

Es gibt vergleichbare Produkte, die sich im Direktverkauf oder Einzelhandel gut verkaufen

Es gibt keine Erfahrungen oder Vergleichsprodukte


Es gibt Referenzen, Tests (Stiftung Warentest, Fachzeitschrift)

Referenzen können gesammelt werden

Keine Referenzen oder Tests


Attraktives Preis-/Leistungsverhältnis

Gute Qualität aber verhältnismäßig hoher Preis

Schlechte Qualität oder sehr hoher Preis


Hoher Erklärungsbedarf

Erklärungsbedarf

Geringer Erklärungsbedarf


Preis bis etwa 100DM

Preis bis etwa 500DM

Preis deutlich über 500DM


Klare Unique Selling Proposition

Produkt mit bekanntem Anwendungsgebiet

Produktnutzen nur schwer darstellbar, komplex


Komplette Infrastruktur für Vertriebs- und Versandlogistik vorhanden

Bestehende Kooperationen mit Firmen, die die Logistik sicherstellen

Keine Struktur und keine bestehenden Kooperationen


Problemhotline mit
0130er Nummer

Problemhotline mit Standardanschluß oder 0180er Nummer

Keine Problemhotline oder nur 0190er Nummer


Etat für klassische Werbung hoch und verfügbar

Durchschnittlicher aber kontinuierlicher Etat

Kein Etat oder nur sporadisch zur Verfügung stehend


Hochwertiges Produkt

Produkt funktioniert

Produktqualität zweifelhaft


Summe


Auswertung:

Rechnen Sie die Punkte in der rechten Spalte zusammen und vergleichen Sie das Ergebnis mit der folgenden Liste:
über 60 Punkte: Das Produkt ist wahrscheinlich sehr gut über das Internet zu verkaufen.

40 - 59 Punkte:           Das Produkt läßt sich online verkaufen, als alleiniger Vertriebsweg ist es
jedoch derzeit nicht geeignet.

25 - 39 Punkte:           Nur eingeschränkter Vertrieb möglich oder im Rahmen größerer Ange­
botspaletten.

unter 25 Punkte:         Von einem Online-Verkauf sollten Sie derzeit Abstand nehmen.

Beachten Sie, daß sich die Werte im Laufe der Zeit verändern können. So werden sicher zu späteren Zeitpunkten andere Produkte im Netz akzeptieren werden. Überprüfen Sie regelmäßig die Angebote und führen sie den Test mit jedem neuen Produkt durch.


Werbung für Online-Shops

In erster Linie kann man Werbung für seinen Online-Shop machen, indem man seine Webadresse wie die Telefonnummer auf jede Visitenkarte, in jede Anzeige, in jeden Fernsehspot, am Firmenschild, usw. anführt.


Arten der Werbung im World Wide Web:

Suchmaschinen: Die wichtigste Art der Werbung ist der Eintrag in Suchmaschinen.
(zB AltaVista, Excite, Yahoo, Webcrawler, )

Bannertauschprogramme: Werbeinblendungen werden ausgetauscht (auf eigener Seite wird fremdes Banner angezeigt und das eigene Banner wird woanders angezeigt), Differenz zwischen der Anzahl eigener und fremder Einblendungen liegt zwischen 20% und 50% der gesamten Bannereinblendungen. Diese Anzahl wird an zahlende Kunden verkauft.
Wichtige deutsche Anbieter sind Adfriend, Adlink, AdView, Link4Link, LinkExchange, LinkX, Page2Page, Sponsorpool. Bei diesen Anbietern sind kostenlose Bannertauschprogramme und teilweise auch kommerzielle Werbebannereinblendungen möglich.

Werbenetzwerke: Professionelle Werbefirmen bieten gezielt Bannerplätze im Internet an. Kommerzielle Werbenetzwerke in Deutschland sind zB Doppelklick in München (http://www.doppelklick.de), ITAS: Burda New Media in München (http://www.itas.de) oder Montabaur (http://www.adlink.de).

Werbeplätze auf Webseiten: Die Betreiber dieser Webseiten stellen Werbefläche zur Verfügung. Die Preise dafür sind etwas höher als bei Werbenetzwerken (Werbeflächen auf privaten Homepages sind billiger). Gerade bei neuen Shops bietet sich jedoch diese Werbeform an.


Kundenbindung

Die Kundenbindung erfolgt im Internet über:

Nachrichten per E-Mail

Mailinglisten

Gästebücher

Diskussionsforen (News)

Chat


Elektronischer Kaufvertrag


Mit dem Boom des in den letzten Jahren immer populärer werdenden World Wide Webs, hat auch die Möglichkeit, Geschäfte im Internet zu tätigen, immer realistischere Formen angenommen.

Da weder der Kunde noch der Händler über den jeweils anderen sichere Informationen hat, müssen bestimmte Sicherheitsmaßnahmen getroffen werden. Im Geschäftsverkehr über das Internet könnte sich nämlich jeder als jemand anderer ausgeben. Darüber hinaus könnte auch noch ein dritter Beteiligter, die zwischen dem Käufer und Verkäufer ausgetauschten Daten, abfangen, lesen oder verändern.


Folgende Schritte sind beim Kaufvorgang zwischen Konsument und Händler üblich:


Ein an alle gerichtetes Angebot des Händlers

Das Kaufinteresse des Käufers wird für ein bestimmtes Produkt geweckt

Der Händler teilt den Preis des Produktes mit

Käufer wickelt die Zahlung an den Händler ab

Die Ware wird dem Käufer vom Händler übergeben


Diese Schritte werden für den Electronic Commerce wie folgt auf das Internet übertragen:


Über eine WWW-Server bietet der Verkäufer seine Waren an, die auf den WWW-Seiten eine genauere Produktbeschreibung und zusätzlich eine Liste möglicher Zahlungsarten anbietet. Jeder Internetuser ist somit ein potentieller Kunde und er erhält die gleichen Informationen wie alle anderen die diese Seiten benutzen.

Nachdem der Konsument die Waren und auch Dienstleistungen, die auf der Webseite angeboten werden, begutachtet hat, kann er sich die verschiedenen Produkte auswählen (die gewählten Produkte kommen in einen Warenkorb). Die Zahlung ist jedoch zu diesem Zeitpunkt noch nicht notwendig und der Verbraucher kann sich die Artikel im Warenkorb noch einmal ansehen. Es steht im frei, ausgesuchte Artikel wieder zu löschen oder die Menge umzuändern.

Nun schickt der Verbraucher dem Händler Informationen über die ausgewählten Artikel, die Zahlungsmethode, die Rechnungsadresse und die Versandanweisungen.

Weiters ist es Aufgabe des Händlers den zu zahlenden Betrag und die benötigte Währungsform zu übermitteln. Zuvor ist es jedoch notwendig, daß der Acquirer des Händlers (also die Händlerbank) die ausgewählte Zahlungsform akzeptiert.

Der Kunde antwortet mit der gleichen Preis und Währungsangabe sowie einem sogenannten Zahlungsobjekt. Das Zahlungsobjekt kann von unterschiedlichen Herausgebern (Banken) stammen und ganz verschiedene Ausprägungen haben. Es kann entweder eine bestimmten Geldwert repräsentieren (anonymes, digitales Bargeld) oder Informationen zum Bankkonto des Kunden enthalten (Einzugsermächtigung).

Der Kunde benützt die selben Preis- und Währungsangaben sowie ein sogenanntes Zahlungsobjekt bei dem Ausgleich der Rechnung. Bei den Zahlungsobjekten spielt es eine wichtige Rolle von welchem Herausgebern (Banken) sie stammen und welche Ausprägung sie vorweisen. So kann des Zahlungsobjekt einerseits einen gewissen Geldwert repräsentieren (anonymes, digitales Bargeld), andererseits ist es auch möglich, daß es Informationen zum Bankkonto des Käufers enthält (Einzugsermächtigung).

Nachdem der Händler die Zahlung erhalten hat, stellt er eine digitale Quittung aus und übersendet die Quittung zusammen mit den ausgewählten Waren an den Kunden.


Da sowohl der Kunden als auch der Verkäufer beim Einkaufsvorgang der Gefahr betrogen zu werden ausgesetzt sind, ist die Aufgabe von Zahlungssystemen vor allem auch im Bereich der Sicherheit zu sehen. Sie sollen also einen möglichst sicheren Kaufvorgang im Internet sichern.


Sicherheit im Grundriß (Notwendigkeit der Datenverschlüsselung)


Sicherheitskonzepte

Um Transaktionen im Internet abwickeln zu können, sind vor allem Sicherheitsmaßnahmen nötig. Zunächst muß die Identität der Kommunikationspartner sichergestellt werden. Weiterhin sollte der Inhalt der Nachricht nur vom Empfänger gelesen werden können. Damit beide Partner die Transaktion als rechtsgültig ansehen, muß die Authentizität sichergestellt werden. Mit der Nicht-Abstreitbarkeit ist gemeint, daß keiner der Partner im nachhinein die Transaktion rückgängig machen oder leugnen kann. Letztendlich muß auch die Integrität sichergestellt werden, sodaß der Inhalt der Nachricht nicht verändert oder durch einen anderen Inhalt ersetzt wurde.


Nicht-Abstreitbarkeit

Ist die Bestellung wirklich                         Identifikation

erfolgt?                     Wer hat bestellt?






Integrität

Ist der Inhalt der

Bestellung echt?

Verschlüsselung

Autorisierung Ist der Übertragungsweg sicher?

Ist die Bestellung echt?


Abb.12: Sicherheitsrelevante Bestandteile von Transaktionen2


Sicherheitsaspekte

Elektronische Sicherheit konzentriert sich auf zwei Bereiche:


den ungewollten Zugriff auf interne Daten verhindern

die Übertragung von Informationen sicherstellen


Sichere Zugriffstechnologien sind für Online-Händler ebenso wichtig wie für Banken und Kreditkartenorganisationen. Sie sind Grundvoraussetzung für den praktischen Betrieb. Das schließt Paßwortschutz und Firewallmechanismen ein, um unautorisiertem Zugriff vorzubeugen und endet mit Angriffssimulatoren, die die Zuverlässigkeit von Schutzsystem testen. Die Information kann durch Verschlüsselungstechniken geschützt werden und durch Authentifizierungsoftware kann der Absender festgestellt werden. Beides verhindert, daß nicht berechtigte Personen die Daten manipulieren können.



Generell gibt es drei Mechanismen zur Zugangsprüfung:

Überprüfung personengebundener Merkmale (Unterschrift, Fingerabdruck, Gesichtserkennung, persönlicher Bekanntheitsgrad)

Inhaberbezogene Kriterien (Besitz einer Kreditkarte, Chipkarte, usw.) auf Hardwarebasis

Inhaberbezogenes Wissen, das sind PIN-Nummern, TAN-Nummern, Paßwörter und andere softwarebasierende Verfahren



Zusammensetzung sicherer

Transaktionen


Geschäftsprozeß


Vertraulichkeit und

Integrität


Authentizität und

Nichtabstreitbarkeit

Registrierung

Bestellung

Zahlungseinzug

Prüfung



Verschlüsselung

Virenschutz

Message Authentification Code (MAC)


PIN/TAN

Digitale Unterschrift

Digitales Zertifikat

Zeitmarke

Abb.13: Sichere Transaktionen zeichnen sich durch viele Einzelmaßnahmen aus1


Zahlungssysteme


Da bereits die Verkäufer übers Internet Millionen von möglichen Kunden erreichen können, haben sich einige Firmen mit der Entwicklung von neuen Systemen beschäftigt, die einen sicheren Zahlungsverkehr im Internet ermöglichen sollen. Solche Internet-Bezahlungssysteme können Soft- und/oder Hardware-Lösungen sein. Voraussetzung dafür sind einheitliche Standards und ein Zahlungssystem, daß verschiedenen Anforderungen entspricht. Diese sind zum Beispiel:


Standhaftigkeit gegenüber Manipulationsversuchen

geringe Kosten für die Sicherheit

geringe Kosten stehen jedoch im Gegensatz zu der geforderten sicheren Bezahlungsmöglichkeit

ökonomische Durchführung von Transaktionen in beliebiger Höhe

Zahlungssystem muß einfach zu bedienen sein


Probleme ergeben sich bei der Erfüllung dieser Anforderungen noch bei der rechtlichen und technischen Verwirklichung.


Die Sicherheit ist für die Akzeptanz des Zahlungssystem sehr wichtig und ihr werden deshalb auch folgende Eigenschaften zugeordnet:


Damit in die übermittelten Daten nicht eingesehen werden kann, müssen sei verschlüsselt werden.

Der elektronische Fingerabdruck verhindert, daß die Daten verändert werden können.

Um die Herkunft der Daten für die Beteiligten erkennbar zu machen, müssen sie authentifiziert werden ('Als Authentifizierung bezeichnet man den Prozeß, in dem eine Person ihre behauptete Identität nachweist. Authentifizierung ist für viele Transaktionen des Electronic Commerce wichtig, da nur auf diese Weise sichergestellt werden kann, daß der tatsächliche Kommunikationspartner auch der ist, der er zu sein vorgibt.'1 ).


Methoden und Algorithmen, um die benötigte Sicherheit zu erreichen, stellt die Kryptographie zur Verfügung. 'In der Kryptographie beschäftigt man sich mit der Entwicklung von Verschlüsselungsalgorithmen, von Verfahren also, mit denen sich Daten auf eine Weise verschlüsseln lassen, die es unmöglich macht, ohne Kenntnis des richtigen Schlüssel die verschlüsselten Daten zu entschlüsseln.'1 Grundsätzlich könnte man sagen, daß die Sicherheit gegeben ist, wenn der Aufwand um an die gewünschten Daten zu kommen, größer ist als der dadurch erworbene Wert (siehe 2.8.6 Verschlüsselungsverfahren).


Analyse elektronischer Zahlungssysteme

Zahlungssysteme für die kommerzielle Nutzung des Internets sind besonders netzorientiert. Derzeit gibt es sehr viele kleine und große Anbieter und das führt zu einem entsprechend unübersichtlichen Markt. Eine Übersicht über die verschiedenen Zahlungsmöglichkeiten ist deshalb sehr wichtig um Vergleiche anstellen zu können. Solche direkten Vergleiche sind oft schwierig, da die Zahlungssysteme oft auf verschiedenen Lösungsansätzen basieren. Darum ist es vorteilhaft zwischen 6 Kategorien zu unterscheiden.


Kreditkartenzahlung

Zahlung mit Smartcards (Geldkarte) und mit Chipkarte (elektronische Geldbörse)

Digitales Bargeld (elektronische Geld = E-Cash) und digitale Münzen (CyberCoins)

Zahlung mit Schecks (Netcheque oder electronic cheque)

Zahlungen über Kundenkonten (Online-Konten)

Zahlung auf herkömmliche Weise


Zahlung über Kreditkarte

Diese Form der Zahlungsabwicklung beruht auf einem bereits bestehenden und etablierten Zahlungssystem. Es ändert sich lediglich das Medium, über welches der Kunde dem Händler die, für die Zahlung mittels Kreditkarte benötigten Informationen, übersendet. Der restliche Ablauf der Transaktion läuft wie immer ab. Es gibt jedoch nicht nur die direkte Zahlung per Kreditkarte, sondern auch Abwandlungen davon.


Bei der Durchführung der Zahlung über das Internet ist es hier am einfachsten, wenn der Kunde seine Kreditkarteninformationen überträgt. Daraufhin rechnet der Händler über sein normales Vertragsverhältnis mit dem Kreditkarteninstitut ab, welches wiederum wie bei der herkömmlichen Kreditkartenzahlung die Abrechnung mit der Bank vornimmt. Dem Kunden entstehen dadurch keine Mehrkosten (nur die jährlichen Gebühren, sowie den Internet-Anschluß). Der Händler muß neben den Kosten für neue Software (zum Teil kostenlos) eine Umsatzprovision von 3, 5 % bis 4 % an des Kreditkartenunternehmen zahlen. Dieses verlangt zwar keine Mindestgebühr pro Transaktion, dem Händler entstehen jedoch Fixkosten (durch Buchung, Verwaltung und Kommunikation), sodaß sich Kreditkartenzahlungen für kleinere Beträge nicht rentabel sind. Dieser Umstand ist wohl der bedeutendste Nachteil der Bezahlung mit Kreditkarte im Internet.


Auch internationale Geschäfte sind, aufgrund der weltweiten Verbreitung von Kreditkarten, kein Problem. Für die Übertragung der Kreditkarteninformationen wurden spezielle Übertragungsprotokolle (siehe 2.8.10 Protokolle) entwickelt. Laut Exportbestimmungen dürfen diese Verschlüsselungsprodukte nur so sicher sein, damit die verschlüsselten Informationen auch noch von staatlichen Stellen, ohne zuviel Aufwand entschlüsselt werden können. Liegt eine Garantie vor, daß ein Verschlüsselungssystem nur für erlaubte Finanztransaktionen verwendet wird, ist es auch möglich Übertragungsprotokolle mit hoher Sicherheit aus den USA einzusetzen. Diesen Bedingungen erfüllt auch ein von VISA und MasterCard entwickelter Zahlungsstandard (SET = Secure Electronic Transaction), der eigens für Kreditkartenzahlung über unsichere Netzwerke konzipiert wurde. Neben der Bezahlung wird hier auch noch der gesamte Kaufvorgang von der Bestellung bis zur Quittung geregelt.


Die eben erwähnten Verschlüsselungsprotokolle und Zahlungsstandards schaffen nur grundlegende Bedingungen für die Bezahlung mit Kreditkarte im Internet. Fertige Zahlungskonzepte wie CyberCash (wurde bereits zum Export aus den USA freigegeben) bieten ausgereifte Software für Banken, Händler und Kunden an. Dabei werden von CyberCash seit 1994 komplette Zahlungsdienste für das Internet entwickelt. Eines davon ist das System zur gesicherten Übertragung von Kreditkarteninformationen (Secure Internet Payment Service).

Solche Zahlungsdienste von CyberCash können auch für Zahlungen mit elektronischem Scheck bzw. mit elektronischem Bargeld (E-Cash und CyberCoin) verwendet werden, was Mikrozahlungen (siehe 2.7.7 Systemeigenschaften von elektronischen Zahlungssystemen) möglich macht.


1. Bestellung



Kunde Händler












Händlerbank


Abb.14: Darstellung eines Zahlungsablaufs bei CyberCash1

Beispiel zum Einkaufen mit CyberCash

Um sich eine genauere Vorstellung vom Ablauf einer CyberCash-Zahlung machen zu können, folgt hier ein Beispiel für einen virtuellen Einkauf im Internet.


Grundlage für einen Einkauf mit CyberCash ist der CyberCash-Wallet.


Abb.15: Wallet


Man sucht sich (zB über unsere Händlerliste) einen Online-Händler, der Buchstaben verkauft, aus.

Auf seiner Web-Site bietet der Händler sein Angebot an:


Abb.16: Auswahl

Man entscheidet sich für das 'A' zum Preis von DM 0, 06, das - zunächst noch verschlüsselt - unmittelbar auf den PC des Käufers übertragen wird.


Nach der Übertragung öffnet sich Ihre CyberCash-Geldbörse. Der  Kaufbetrag muß bestätigt werden oder der Kaufvorgang wird abgebrochen.


Abb.17: Bezahlung


Nach Ihrer Bezahlung (Sie betätigen die Schaltfläche 'Bezahlen') erhält der Händler eine Bestätigung über die Ausführung der Zahlung und sendet Ihnen den Schlüssel (siehe 2.8.11 Sicherheit bei verschiedenen Anwendungen).
Die erworbene digitale Ware (das Computerspiel, das Musikstück etc.) wird dann mit dem zugehörigen Programm in geeigneter Form verarbeitet. In unserem Fall öffnet der Web-Browser die Datei und zeigt den Buchstaben 'A' an.


Abb.18: Lieferung

Zahlung mit Smartcards (Geldkarte)

Eine weitere sehr sichere Methode des elektronischen Geldes ist die Smartcardtechnologie (Geldkarte). Die Geldkarte enthält einen Mikrochip, der virtuelles Geld in Form von digitalen Geldeinheiten speichern, abgeben, sowie wieder auffüllen kann. Ein wesentlicher Vorteil dieses Systems besteht daran, daß die Karte mit einem Bargeldäquivalent wieder aufladbar ist. Das bedeutet, daß der Eigentümer bei Diebstahl oder Verlust der Karte, nur den gerade in der Karte gespeicherten Wert verliert. Smartcards sind vergleichbar mit den bereits seit Jahren im Einsatz befindlichen Telefonkarten für Kartentelefone.

1994 wurde von der ESD GesmbH (http://www.esd.de) eine interessante Hardwarelösung, der MeChip, entwickelt. Hier wird eine Smartcard mit dem speziell designten Chip zwischen Tastatur und Computer geschaltet. (genauere Beschreibung des MeChips und der Geldkarte unter dem Punkt 2.8 Sicherheit)


Proton

Die Fa. Banksys, das belgische Zahlungsnetzwerk, begann die Vermarktung ihrer Smartcard 1995. Die Karte wird mit Bankautomaten geladen und kann für kleinere Käufe bis BFr 5.000, -

(ca. 280, - DM) genutzt werden. Etwa 32.000 Protonkarten sind im Umlauf. Neben Belgien ist Proton auch in der Schweiz, Australien, Brasilien und den Niederlanden im Einsatz.


Java Card

Mit der sogenannten Java Card 2.0 zeichnet sich ein neuer Standard bei den Smartcards ab. Durch die universelle Programmierschnittstelle Java-Card-API 2.0, auf der Basis der Programmiersprache Java, vereinfacht sich die Umsetzung von sicherheitsrelevanten Anwendungen erheblich. Das Sicherheitsprotokoll SET (Secure Electronic Transaction) wird direkt auf die Smartcard integriert (siehe 2.8.10 Protokolle). Zusätzlich werden Authentifizierungs-Protokolle unterstützt, die das unzulässige Schreiben und Lesen von Daten wirkungsvoll verhindern.


Zahlung mit Chipkarte (elektronische Geldbörse)

Der Einsatz von Chipkarten ist bis dato zwar noch nicht realisiert, aber wird diese eine bedeutende Rolle für den Zahlungsverkehr im Internet spielen. Der Grund dafür ist in einer enorm potentiellen Kosteneinsparung zu suchen. Da Chipkarten große Sicherheit bieten, kann bargeldloser Zahlungsverkehr nämlich zukünftig ohne sofortige Prüfung der Gültigkeit einer EC-Karte, also offline, durchgeführt werden. Die durch eine Prüfung entstehenden kosten könnten durch den Einsatz einer Chipkarte reduziert werden. Daher werden etwa 50 Millionen EC-Karten in Deutschland mit Chips und einer Geldbörsenfunktion ausgestattet.

Die weite Verbreitung und hohe Sicherheit, läßt eine ungewöhnlich große Akzeptanz eines solchen Angebots erwarten.2


Telecash

Als Alternative zur Kreditkarte entwickelte die Stuttgarter Telecash die TC-Moneybytes (http://www.telecash.de). Der Kunde zahlt mit dem Geldkartenchip auf der EC-Karte. Für PCs gibt es einen Adapter, der ins Diskettenlaufwerk geschoben wird und der Betrag wird dann vom Chip abgebucht. Da EC-Karten weiter verbreitet sind und eher akzeptiert werden als Kreditkarten erhofft sich Telecash eine besonders günstige Position.3

Zahlungen mit digitalem Bargeld (elektronisches Geld)

Das digitale Bargeld kann als neue elektronische Währung im Internet bezeichnet werden, wobei der Kunde und der Händler, ähnlich wie bei Bargeld, nicht auf die Vermittlung von Banken oder Kreditinstituten angewiesen sind. Eine Bank hat nur die Aufgabe, die Währung zu decken, auszugeben und zu akzeptieren. Sie kann jedoch keine Verbindungen zwischen Kunden und Käufer herstellen, sodaß der Kunde anonym bleibt.

Der Nachteil des elektronischen Geldes ist, daß es leichter kopiert werden kann, und somit müssen die sogenannten digitalen Münzen bei Einzahlung auf ihre Gültigkeit geprüft werden. Diese Prüfung wird nur von der ausgebenden Bank durchgeführt, wobei auch Geld zwischen Banken transferiert werden muß (clearing). Der Prüfvorgang läuft von Händler und Kunde unbemerkt ab und darf sich auch nicht auf die Transaktionen und Anonymität auswirken.


Für die Entwicklung des Electronic Commerce ist das elektronische Geld als Zahlungsmittel im Internet sehr wichtig. Damit sich diese Form der Bezahlung durchsetzen kann, müssen jedoch die Eigenschaften und die Funktionalität des realen Bargelds (Anonymität, Mikrozahlungen) auf das digitale Bargeld übertragen werden. Digitale Münzen haben aber genauso wie reales Bargeld einen inhärenten Wert.


Erfinder dieses Systems ist die niederländische Firma DigiCash (http://www.digicash.com). Eigentlich besteht das elektronische Geld nur aus einer Bitfolge, die einen bestimmten Geldwert darstellt. Der Käufer kann diese Bitfolge als Datei auf seinem PC gespeichert haben. Bei der Bezahlung eines im Internet abgewickelten Geschäftes, sendet dann der Käufer den entsprechenden Betrag an elektronischem Geld über das Netz an den Verkäufer.


Elektronisches Geld kann jedoch problemlos beliebig oft kopiert werden, wobei die Kopien vom Original nicht zu unterscheiden sind. Mehrfaches Bezahlen mit dem selben Geldstück muß deshalb verhinderbar oder erkennbar sein. Durch Verschlüsselungs- aber aus Organisationsmethoden soll ein Erstellen bzw. Verwenden von elektronischem Falschgeld verhindert werden. Es ist daher nicht nur die Realisierbarkeit des elektronischen Bargelds ein Problem, sondern auch die Notwendigkeit von Schutzmaßnahmen.

Um diese Probleme besser verstehen zu können, sollte man nach den verschiedenen Formen und Anwendungsmöglichkeiten des elektronischen Geldes unterscheiden.

Es gibt zwei Arten des digitalen Bargeldes:


Anonymes Bargeld: Der Händler zahlt das erhaltenen Gelde bei der Bank ein. Die Bank kann durch den Einsatz spezieller Verschlüsselungstechniken das eingezahlte Geld nicht mehr mit dem Kunden in Verbindung bringen, der es abgehoben hat. Sie kann nur feststellen, daß sie selbst das Geld ausgegeben hat. Diese Arte des digitalen Geldes ist vergleichbar mit realem Bargeld.

Identitätsbezogenes Geld: Informationen, mit denen die Bank den Kunden der das Geld abhebt identifizieren kann, sind in dieser Art des elektronischen Geldes enthalten. Somit kann auch der genaue Geldfluß verfolgt werden.




Eine weiter Unterscheidung kann nach dem Bezahlungsvorgang getroffen werden:


Erfolgt eine Zahlung online (über eine Netzverbindung), ist eine sofortige Prüfung auf die Echtheit der Münzen durch die Bank möglich. Das hat zur Folgen, daß eine Münze nur einmal verwendet werden kann.

Bei offline Zahlungen werden die verwendeten digitalen Münzen erst später von der Bank geprüft. Es besteht daher die Möglichkeit das Geld im nachhinein zu prüfen und einen eventuellen Betrüger zu entlarven. Die Münze enthält wiederum Informationen über die Identität des Besitzers.




E-Cash von DigiCash

DigiCash zielt nur auf das Internet und verwendet sogenannte 'Token' in Form digitaler Signaturen (siehe 2.8.11 Sicherheit bei verschiedenen Anwendungen), die die Nutzer bei ihrer Bank in Geld umwandeln können


















zB geprüfte Münzen +

Bestätigung/

Ablehnung

  Kontobelastung


ev. Münzrohlinge


Bankserver




Abb.19: Darstellung des Bestell- und Zahlvorgang beim E-Cash System von Digicash


CyberCoin

Für Beträge ab 25 Cent bis 10 Dollar geeignet. Aus Sicherheitsgründen wird bei CyberCoin vom Händler eine Lizensierung verlangt und es wird vom Händler bezahlt. Der Anbieter zahlt nichts. Für den Export hat CyberCoin eine Ausnahmegenehmigung der US-Regierung, sodaß dieses Verfahren weltweit verwendet werden kann. Die nötige Software ist für den Kunden kostenlos bei CyberCash erhältlich. CyberCash ist nicht münzbasierend, sondern überträgt nur Kreditkartenangaben auf einem sicheren Weg (siehe 2.7.1 Zahlung über Kreditkarte). Banken, die entsprechende CyberCash-Server betreiben, dienen als Geldaustauschinstitute. Der Händler ist also auf die Zusammenarbeit mit solchen Banken angewiesen.


First Virtual

Von First Virtual (http://www.fv.com), einem der ersten Anbieter elektronischer Zahlungsmittel, wird kein echtes neues Geld angeboten. Es wurde ein eigenes Sicherheitssystem entworfen, mit dem Hintergrund, daß Informationen nicht immer verschlüsselt transportiert werden können. Anstatt Kreditkarteninformationen immer wieder über das Netz zu schicken, wird hier diese Information hinterlegt und gegen eine eigene Nummer, den VirtualPIN, ausgetauscht. Die Kreditkarteninformation wird außerhalb des Internets in einem eigenen Rechner gespeichert und geprüft. First Virtual sendet bei jeder Kreditkartenanfrage eine E-Mail zurück, die mit 'JA' beantwortet werden muß, sodaß mit der PIN-Nummer kein Betrug möglich ist und das Stehlen der PIN-Nummer sinnlos wird. Der Käufer muß deshalb eine gültige Kreditkarte (VISA oder Eurocard) und eine E-Mail-Adresse haben. Die eigentliche Ersteinrichtung ist natürlich nicht über das Internet möglich, üblicherweise kann man die PIN-Nummer aber per Telefon bestellen.


Millicent

Dieses neue System wurde Ende 1997 von Millicent (http://www.millicent.com) eingeführt und wurde von Digital Equipment (DEC) entwickelt. Es ist geeignet für Geschäfte mit einem Umfang von einem Zehnteldollar bis 5 Dollar, damit kleine Datenabrufe im Internet, die zeitweilige Nutzung von Rechenleistung sowie Software bezahlt werden können. Für den Kunden beträgt die Gebühr 1 % des Umsatzes.


Netbill

Der Feldtest von Netbill (http://www.netbill.com) begann ebenso wie von Millicent im Herbst 1997. Es werden dabei Beträge ab 1 Pfennig erlaubt. Die Anwender müssen keine Gebühr bezahlen, sodaß nur der Händler eine Provision an den Anbieter der Cyberwährung abführen muß.


NetCash

Das digitale Münzverfahren NetCash (http://www.netcash.com/~netcash) ist eine eigene elektronische Münze und wurde von der Firma Software Agents 19944 entwickelt. Dabei sollen Geldwerte als Datenblock auf Festplatten oder anderen Datenträgern gespeichert werden. Der Kunde muß sich bei NetCash registrieren und erhält gegen Bezahlung auf herkömmlichen Wege digitale Münzen. Diese Münzen ('Coupons') werden per E-Mail an den Nutzer versandt. Beim Einkauf übergibt der Kunden die digitale Münze per E-Mail an den Händler, der die Münze dann wieder bei der Bank gegen Geld einlöst. Um die Sicherheit, daß das Geld nicht digital kopiert wird, zu gewährleisten, unterhält die Bank eine Datei mit Seriennummern der Coupons. Jeder Coupon ist deswegen einmalig und kann auch nur ein einziges Mal verwendet werden. Dieses Verfahren kann jedoch auch als perfektes Überwachungsinstrument werden, indem jeder Coupon von der Bank zum Kunden über den Händler verfolgt wird. Damit kann festgestellt werden, wer was wann wo gekauft hat.


Andere Systeme

Weitere Systeme sind bereits, besonders am berühmten Massachusetts Institut for Technology, in der Entwicklung. Es sind zum Beispiel zwei weitere Systeme im Test, 'PayWord' und

'MicroMint'. Bei beiden Systemen sollen nur Kleinstbeträge übertragen werden. Komplizierte Verschlüsselungen oder Autorisierungsverfahren gibt es dabei nicht, denn die Währung ist gerade so kompliziert, daß die Entschlüsselung ein wenig mehr kostet als damit gestohlen werden kann.


Zahlungen über Kundenkonten (Online-Konten)

Kundenkontos auch Online-Konten genannt, stellen eine weitere Möglichkeit der Bezahlung über das Internet dar. Dabei wird ein Kundenkonto von einer vermittelnde dritte Partei (Vermittler bzw. Systembetreiber) geführt. Der Ablauf einer Bezahlung mittels Kundenkonto sieht folgendermaßen aus. Nachdem sich der Kunde in ein Einkaufssystem eingewählt hat, weist er sich aus (zB durch ein Paßwort) und tätigt daraufhin seine Einkäufe. Die Rechnungsbeträge werden dabei auf seinem Kundenkonto festgehalten und regelmäßig von seinem Bankkonto abgebucht. Da es hier keine gesetzlichen Zahlungsmittel gibt, muß der Vermittler auch keine Anforderungen an solche erfüllen. Bei diesem Zahlungssystem führt eine dritte Partei das Konto des Kunden, die auch Bestellungen und Zahlungen mit dem Verkäufer abwickelt. Kunde und Händler gehen bei diesem Zahlungssystem ein festes Vertragsverhältnis mit dem Vermittler ein.

Die Zahlung über Kundenkonto ist vielseitiger einsetzbar als andere Zahlungssysteme, da der Systembetreiber zum Beispiel mehrere Transaktionen sammeln und mit dem Kunden abrechnen kann. Das bringt vor allem den Vorteil, daß sich die Kosten, die bei einer Transaktion anfallen (Kommunikation, Prüfung, Buchung), auf mehrere Transaktionen aufteilen. Damit rentieren sich auch Überweisungen von kleinen Beträgen (Mikrozahlungen, siehe 2.7.7 Systemeigenschaften elektronischer Zahlungssysteme). Weiters kann ein Kunde (zB Kleinhändler) auch Zahlungen von anderen Kunden für Waren oder Dienstleistungen annehmen. Auf diese Weise wäre es auch möglich, daß jeder wie bei einem Flohmarkt die Möglichkeit hat, über das Internet etwas zu verkaufen, ohne bestimmte Voraussetzungen als Verkäufer erfüllen zu müssen.


Es ist jedoch notwendig, daß sich der Kunde nur mehr beim Systembetreiber ausweisen braucht und somit beim Einkaufen die Anmeldung bei den Händlern wegfällt. Solche Systembetreiber sind Online-Dienste (zB CompuServe oder AOL) sowie ähnliche Systeme, die ihre Leistungen in virtuell geschlossenen Systemen im Internet anbieten. Diese Systeme werden als Internet-Marktplätze (zB MyWorld) oder auch als geschlossen elektronische Marktplätze bezeichnet. Es gibt jedoch eine weitere Möglichkeit, bei der das gesamte Internet als Marktplatz bereitsteht. Dabei sind aber auch eigene umfassende Konzepte notwendig. (Ein Anbieter ist bspw. First Virtuell)


Man kann die vielversprechendsten Zahlungsmöglichkeiten (digitales Bargeld, Kreditkarte, Kundenkonto) im Bereich des E-Commerce sehr gut nach ihren Einsatzmöglichkeiten und des Zahlungsbetrages vergleichen. Digitales Bargeld wird in erster Linie für Mikrozahlungen (siehe 2.7.7 Systemeigenschaften elektronischer Zahlungssysteme) eingesetzt, während Kreditkartenzahlungen alle größeren Zahlungsvorgänge ( = Makrozahlungen - siehe 2.7.7 Systemeigenschaften elektronischer Zahlungssysteme) abdecken werden. Durch Kundenkontos können Zahlungen in verschiedener Höhe durchgeführt werden, wobei aber auch ein geschlossener Marktplatz vorhanden sein muß. Voraussichtlich wird, nachdem sich zwei dieser Zahlungsmethoden durchgesetzt haben, die dritte Zahlungsform bei Geschäften über das Internet zurückgehen.


Zahlung über Schecks (Netcheque oder electronic cheque)

Dieses Verfahren wurde von Clifford Neumann an der University of Southern California entwickelt und überträgt das Prinzip des Verrechnungsschecks auf elektronische Systeme. Der elektronische Scheck enthält alle Angaben die auch auf normalen Schecks zu finden sind:


Kontonummer des Ausstellers,

Bezeichnung des Empfängers (Händler, Lieferant),

den Zahlungsbetrag und die Währung, in der bezahlt werden soll,

eine digitale Unterschrift, die die Echtheit bestätigt.


Netcheque ist wie richtige Schecks nicht anonym. Vorteile sind, daß der Scheck transportierbar ist, der Datenblock weitergereicht und gespeichert werden kann. Bei entsprechender Sicherheitsstufe der digitalen Signatur eignen sie sich für größere Bezahlungen. Eine Online-Bestätigung erfolgt jedoch nicht.


Zahlung auf herkömmliche Weise

Neben einer Bezahlung durch verschiedene neue Methoden kann die Zahlung jedoch auch wie bisher per Rechnung, Banküberweisungen oder per Lastschriftverfahren erfolgen. Dabei dient das Internet, wie das Fax oder Telefon, nur dazu die Bestellung durchzuführen und die Bezahlung erfolgt dann wieder auf herkömmliche Weise. Diese Zahlungsverfahren können aber durchaus eine sinnvolle Alternative zu den vorher beschriebenen Zahlungsmethoden darstellen.


Systemeigenschaften elektronischer Zahlungssysteme

Zahlungssysteme haben grundsätzliche Eigenschaften, die ausschlaggebend für dessen Umsetzung sind. Dadurch wird es auch möglich die verschiedenen Zahlungssysteme zu ordnen und miteinander zu vergleichen. Es folgt eine Beschreibung der wichtigsten Eigenschaften.


Sicherheit

Um den Mißbrauch von Zahlungssystemen zu verhindern, muß vor allem im Internet, einem eher unsicheren Kommunikationsnetz, der Schutz gegeben sein. Die Sicherheit wird primär durch Datenverschlüsselungen erreicht. Aber auch andere Verfahren (zB nur einmal gültige Transaktionsnummern) können ausreichend Sicherheit bieten.


Skalierbarkeit

Für manche Zahlungssysteme gibt es hinsichtlich der Anzahl von Benutzern dieses Zahlungssystems gewisse technische Grenzen. Um vielseitig einsetzbar zu sein sollte ein Zahlungssystem deshalb skalierbar sein. Das bedeutet, daß es einfach zu erweitern sein soll, um möglichst viele Teilnehmer bedienen zu können.





Mikrozahlungen

Gerade für elektronisches Geld ist es sehr wichtig, Zahlungen mit kleinen Beträgen von weniger als 5 DM (micropayments) abwickeln zu können. Es ist jedoch nicht für alle Zahlungssysteme mögliche Mikrozahlungen durchzuführen, weil oft so hohe Fixkosten entstehen, daß die Transaktion einfach zu teuer wäre.


Makrozahlungen

Vor allem bei Kreditkartenzahlungen werden Makrozahlungen (alle Beträge über 5 DM) abgewickelt. Alle niedrigeren Beträge würden nämlich nicht einmal die Kosten des Zahlungsvorgangs abdecken.


Bedienbarkeit

Für den Benutzer sollte das Zahlungssystem einfach zu verstehen sein und auch die Abwicklung eines Zahlungsvorgangs sollte klar sein.


Kleinhändler

Ein Zahlungssystem sollte nicht nur für den Einkauf bei einem Händler, sondern auch für das Einkaufen bei anderen Personen (Kleinhändler, Privatpersonen) geeignet sein (micromerchant).


Anonymität

Damit Händler, Banken oder Vermittler keine Benutzerprofile, die über die normal leicht erstellbaren Kundenprofile hinausgehen, erstellen können, stellt die Anonymität des Kunden auch eine wichtige Voraussetzung für elektronische Zahlungssysteme dar.


Zukunft von Zahlungssystemen

Geeignete Zahlungssysteme werden sich sicher auf den Bereich des Electronic Commerce auswirken, denn es ist ein großes Volumen bei den Online-Geschäften im Netz vorhanden und auch Informationen die noch kostenlos im Internet zur Verfügung gestellt werden, könnten nach der Entwicklung von Micorpayment-Verfahren Geld kosten.

Derzeit ist es wichtig die Nutzer auf möglich Gefahren hinzuweisen, auch wenn Mißbrauchsmöglichkeiten eher selten ausgenutzt werden. Der telefonische Einkauf bei Versandhäusern zeigt, daß auch wenn Möglichkeiten des Mißbrauchs vorhanden sind, sie bisher nicht in größeren Umfang genutzt worden sind.

Die Aufhebung des amerikanischen Exportverbots für sichere Kryptosoftware könnte die verschiedenen Zahlungssysteme sicherer machen und somit auch das Vertrauen der Internetbenützer in den elektronischen Handel stärken.








Verschlüsselung


Warum verschlüsseln?

Es wird verschlüsselt, um unerwünschte Einsicht in Daten (Rechnungen, Datenbanken, Finanzbuchhaltungen, Programme, elektronische Briefe, ) durch andere Leute zu verhindern. Ein Nachteil der Verschlüsselung ist, daß man den Schlüssel nicht vergessen darf, sonst ist die Information so gut wie weggeworfen.


Grundprinzip


Chiffrierschlüssel Dechiffrierschlüssel




bedrohter Übertragungskanal


Klartext      Veschlüsselungs- Chiffre- Chiffre- Entschlüsselungs- Klar-

funktion text text funktion text


Alle Verschlüsselungsverfahren basieren auf dem gleichen Grundprinzip. Durch Anwendung einer Schlüsselfunktion wird die Information für den Transport über öffentliche Kanäle (Internet) unlesbar gemacht. Eine Verschlüsselungssoftware besteht also immer aus zwei Teilen:


eine beim Server und

eine beim Client.


Damit wird klar, daß der Einsatz von Verschlüsselungstechniken bestimmten Standards entsprechen muß (zB: Ein Betreiber einer elektronischen Handelslösung kann nicht einfach eine für in ideale Variante wählen, ohne auf das Interesse der potentiellen Käufer einzugehen.


Warum benötigt man den Datenschutz?

Die neue kommerzielle Nutzung verdrängt die alten wissenschaftlichen und durchaus menschenfreundlichen Nutzungsstrukturen. Viele Websites erfahren mittels Fragebögen überaus viel von ihren Besuchern. Das Vertrauen der Nutzer scheint dabei entgegen aller Erwartungen, sehr groß zu sein.


Sicherheit betrifft die Rechtsdurchsetzungsfähigkeit im Fall von mißglückten Käufen, den Schutz persönlicher Daten und den Schutz des Verbrauchers vor unerwünschten Marketingaktivitäten. Zur Überwachung der Marketingaktivitäten auf den elektronischen Märkten und die Einhaltung von Schutzstandards für Verbraucher, ist es notwendig, eine global tätige Einrichtung (etwa auf WTO-Ebene) einzurichten, die die elektronischen Märkte überwachen kann. Sie soll auch das Verhalten der Marktteilnehmer überprüfen und im Falle von Mißbräuchen das Recht auf entsprechende Eingriffsmöglichkeiten haben. Solange es solche Sicherheitsnetze nicht gibt, ist den Verbrauchern zur Vorsicht beim E-Commerce zu raten.


Der europäische Datenschutzstandard, eine EU-Richtlinie gibt es mittlerweile, müßte ebenfalls globalisiert werden, um E-Commerce verbraucherfreundlich und sozialverträglich zu gestalten. Und in einer ähnlichen Weise wäre für die Frage der Authentisierung bzw. der Digitalen Signatur (siehe 2.8.6 Verschlüsselungsverfahren) ebenso eine international standardisierte Lösung auf hohem Schutzniveau für die Verbraucher notwendig.


Begriffe der Sicherheit

Sicherheitsaspekte

Die Präsenz im Internet stellt für Unternehmer ein Risiko dar, da Daten aus der EDV direkt mit dem Internet verbunden und somit möglichen Angriffen von außen ausgesetzt sind. Dies gilt vor allem für die Einrichtung eines E-Commerce Systems, da den Kunden interne Produktinformationen zur Verfügung gestellt werden müssen.

Bei der Betrachtung von Sicherheitsfragen kann man sowohl auf Anbieter- als auch auf Kundenseite zwischen drei Bereichen unterscheiden:


Systemsicherheit

Daten- und Applikationssicherheit

Kommunikationssicherheit.


Systemsicherheit

Um Daten, die auf einem System gespeichert sind, vor unbefugtem Zugriff von außen (Internet), zu schützen und laufende Anwendungen vor einer Manipulation durch Dritte vorzubeugen, muß der Zugriff aus dem Internet eingeschränkt werden. Dies wird durch sogenannte 'Firewalls' ermöglicht, die zwischen Internet und dem eigenen Netzwerk installiert werden. Ein Firewall-System besteht meist aus einem eigenen Rechner mit Betriebsystem, das nur bestimmte Internetdienste oder Verbindungen zu festgelegten Internetadressen zuläßt.


Daten- und Applikationssicherheit (Anwendungssicherheit)

Bei der Anwendungssicherheit geht es um die Sicherheitsrisiken, die von einzelnen Programmen (zB Browser) abhängen. Problematisch sind jene Anwendungen, die mit Absicht einen Zugriff auf bestimmte Betriebssystemfunktionen, auf angeschlossene Geräte oder auf das Dateisystem verschaffen. Eine Sicherung dagegen kann nur durch eine sorgsame Konfiguration oder durch einen Verzicht auf bestimmte Anwendungskomponenten ermöglicht werden.


Kommunikationssicherheit / Transportsicherheit

Während die beiden vorgenannten Sicherheitsbereiche eigentlich Probleme sind, die durch das Internet hervorgerufen werden, stellt die Kommunikationssicherheit (Austausch von Daten zwischen Händler und Kunden) ein wesentliches Element eines E-Commerce-Systems dar. Die Grundlage für eine rechtliche bindende Transaktion stellt die sichere Datenübertragung dar. Dazu müssen folgende Anforderungen erfüllt werden:


Vertraulichkeit

Integrität

Authentizität / Authentisierung

Identifkation / Autorisierung / Zugriffskontrolle

Nachweisbarkeit / Nicht Abstreitbarkeit

Die Vertraulichkeit kann durch eine entsprechende Verschlüsselung der Daten gewährleistet werden, damit sie ein unbefugter Dritter nicht lesen kann (Entschlüsselung nur durch den Empfänger). Der Empfänger sollte auch den Absender der Daten auf die Authentizität prüfen. Die Transaktion selber sollte für alle Beteiligten nachweisbar sein, um eventuelle Streitfälle besser lösen zu können. Schließlich sollte eine Integritätsprüfung der Daten nach der Übertragung gewährleistet sein (auf Richtigkeit), um mögliche Anderungen zu erkennen.


Sicherheitsprobleme

Knotenrechner haben die Aufgabe, die verschiedenen Datenpakete in die richtige Richtung weiterzuleiten. Das Problem besteht nun darin, das Daten an Knotenrechnern abgehört werden können. Ein Abhörer braucht dazu nicht einmal einen direkten Zugang zu diesen Rechnern. Hacker starten von anderen Rechnern aus Programme auf den Knotenrechnern und gelangen auf diesem Weg zu Kreditkartennummern, Paßwörter u.ä.


Ohne Sicherheitsmaßnahmen würde jedoch ein Chaos entstehen. Im Prinzip kann sich jeder als jemand anderer ausgeben und Daten von Dritten abfangen, lesen oder verändern. Die Aufgabe des Zahlungssystems besteht nun darin, einen sicheren Kaufvorgang im Internet zu gewährleisten.


Grundlagen zu Zahlungssystemen

Ein gutes Zahlungssystem muß resistent gegenüber Manipulationsversuchen sein und die Transaktionskosten dürfen nur gering sein. Manchmal möchte der Käufer seine Einkäufe anonym tätigen (wie beim Bargeld). Dies läßt sich wiederum nur schwer in Verbindung mit einer sicheren Bezahlungsmöglichkeit erfüllen. Auch sollten Transaktionen in beliebiger Höhe (10 Pfennig bis 10.000 Mark) ökonomisch durchführbar sein. Weiter müssen Zahlungssysteme einfach zu bedienen sein.

Jedoch stehen einigen Anforderungen rechtliche und technische Hürden im Weg. Eine wesentliche Anforderung an ein Zahlungssystem im Internet ist die Sicherheit, die mehrere Aspekte umfaßt:


Übertragene Daten sollen nicht eingesehen werden. Dazu werden die Daten verschlüsselt.

Übertragene Daten sollen nicht verändert werden. Dazu werden sie mit einem elektronischen Fingerabdruck versehen.

Die Herkunft der Daten muß bekannt sein. Dazu werden sie authentifiziert.


Die Kryptographie stellt Methoden und Algorithmen (siehe 2.8.6 Verschlüsselungsverfahren) zur Verfügung, um die geforderte Sicherheit zu erreichen. Grundsätzlich gilt: Wenn die Kosten, um an ein Geheimnis zu kommen, größer sind als dessen Wert, dann wird es als sicher bezeichnet.


Kryptographie

Der Sinn der Kryptographie besteht darin, Daten vor unbefugtem Lesen oder Andern zu schützen. DES (Data Encryption Standard) läßt sich für beide Aufgaben einsetzen. Einerseits kann ein Text gut verschlüsselt werden, andererseits kann eine Prüfsumme berechnet werden, mit der Veränderungen sichtbar werden. DES wird dabei aber vorwiegend als Ver- bzw. Entschlüsselungssystem verwendet (siehe 2.8.6 Verschlüsselungsverfahren).

Sicherungsarten beim Verschlüsseln

Es gibt drei Prinzipien:

a)     über das Betriebssystem wird ein sogenannter Master gelegt, der alle Zugriffe kontrolliert. Nachteil ist die relativ komplizierte und aufwendige Verwaltung.

b)     nur einzelne oder Gruppen von Dateien werden verschlüsselt. Vorteil ist die Sicherheit, aber eben Nachteile bei der Geschwindigkeit gegenüber a).

c)     nur bestimmte Informationen werden für den Zugriff verschlüsselt. Vorteil: sehr schnell aber nicht so sicher wie volles Verschlüsseln.


Anforderungen an Softwarelösungen

Die Schutzmechanismen sollten mindestens mit bekannten Programmen wie PCTOOLS oder NORTON nicht zu überlisten sein.

Einfache und vor allem immer gleiche Verschlüsselung von Daten ist sinnlos, da sie leicht zu knacken ist. Die vorhandenen Standards (zB DES) sollten erfüllt werden.

Verschlüsselungsalgorithmen müssen den bekannten Qualitätsmerkmalen genügen und trotzdem bedienungssicher sein.

gelöschte Daten oder Dateien dürfen nicht übrig bleiben, da sie sehr leicht zu lesen sind.

Zugriffsschutzsysteme für Festplatten sollten das Starten vom Laufwerk A aus erlauben, aber trotzdem den Zugriff auf die Platte abwehren.

Die Systeme sollten einer Neuformatierung der Platte, Rettung mit PCTOOLS und anschließenden Datenzugriffen standhalten.

Die Schutzmaßnahmen sollten automatisiert (zB Batchdateien) gesteuert und mit tolerantem Zeitaufwand erfolgen können.

Ein Schutz sollte beim Abschalten des Rechners bleiben.


Verschlüsselungsverfahren (Veschlüsselungsalgorithmen)


Was sind Veschlüsselungsalgorithmen?

Als solche werden Verfahren bezeichnet, bei denen aus unverschlüsselten Originaldaten verschlüsselte Daten erzeugt werden. Dazu gibt es zwei standardisierte Verfahren:


DES

Dieses Verfahren beruht auf einem von IBM entwickelten Algorithmus von 1970. Es handelt sich um eine symmetrische Blockchiffre mit einer Blocklänge von 64 und einer Schlüssellänge von 56 Bit. Es wird ein Text in Blöcke mit einer Schlüssellänge von 64 Bit zerlegt und diese Blöcke nochmals mit 56 Bit verschlüsselt. Man muß sich zB ein Radschloß mit 64 Ziffernsperren vorstellen, wobei es nur die Möglichkeiten 0 und 1 gibt. Danach werden die Blöcke eben noch einmal mit einem Schlüssel von 56 Bit versehen. Es handelt sich um den meist analysierten kryptographischen Algorithmus, und er gilt heute noch als recht sicher. Allerdings muß davon ausgegangen werden, daß DES keinen Schutz vor Angriffen durch große Regierungen bietet.

Zwei frühe Kritiker des DES schlugen eine Maschine vor, die in der Lage wäre, das DES zu knacken. Solch eine Maschine würde beim Stand heutiger Technik etwa 20 Millionen Mark kosten und wäre in der Lage pro Tag etwa 2 Schlüssel zu ermitteln.

Es existieren auch mehrere Abwandlungen von DES, zum Beispiel das sogenannte 'Triple DES', bei dem statt mit einem, mit zwei 64 Bit Schlüsseln gearbeitet wird. Der Text wird dabei in drei Schritten verschlüsselt: zuerst mit der ersten Hälfte des Schlüssels, als zweites mit den nächsten 56 Bits und zum Schluß wieder mit der ersten Hälfte.

Ein Computer im Wert von 1 Mio. USD würde bei Triple DES 10 hoch 13 Jahre benötigen, um den Schlüssel zu entziffern.


RSA

Dieser von Rivest, Shamir und Adleman vorgestellte Algorithmus ist ein asymmetrischer Algorithmus mit variabler Schlüssellänge.

Die Sicherheit von RSA beruht darauf, zwei große Primzahlen miteinander zu multiplizieren und aus dem Produkt wieder die beiden Primfaktoren zu ermitteln, was praktisch als unmöglich scheint. Für die Beurteilung der praktischen Sicherheit kommt es vor allem darauf an, wie groß die Zahlen sind, die in der Praxis gerade noch berechenbar sind. 512 Bit gelten mittlerweile als unsicher, und auch 768 Bit genügen nicht den höchsten Sicherheitsansprüchen. 1024-Bit-Schlüssel werden im Lauf der nächsten Jahrzehnte möglicherweise zu brechen sein, erst ab 2048 Bit kann man von guter Sicherheit ausgehen.

Der Algorithmus läßt sich nicht nur zur Verschlüsselung, sondern auch zum Erzeugen und Überprüfen digitaler Signaturen einsetzen. Dabei kann der private Konzelationsschlüssel gleichzeitig als privater Signaturschlüssel und der öffentliche Konzelationsschlüssel zur Überprüfung von Signaturen eingesetzt werden. Signiert wird durch Verschlüsseln des Hashwerts (siehe 2.1.3 Homebanking mit dem PC) mit dem privaten Schlüssel.


Asymmetrische (Public Key) - und symmetrische (Private Key oder Secret Key)1

Das Herz der Datensicherheit ist also das Verschlüsseln. Es wird zwischen zwei verschiedenen Verschlüsselungsarten unterschieden: den symmetrischen (DES) und den asymmetrischen Verfahren (RSA). Die symmetrischen Verfahren arbeiten mit einem Schlüssel, der zwischen zwei Partnern vereinbart wird und den nur diese Partner kennen dürfen (daher der Name Private oder Secret Key).

Im Gegensatz dazu gibt es asymmetrische Verschlüsselungsverfahren. Das bekannteste ist das sogenannte RSA-Verfahren. Es beruht auf der Idee, mit zwei unterschiedlichen Schlüsseln zu operieren: je ein eigener für Ver- und Entschlüsseln, die mathematisch zusammenhängen. Dennoch sollen beide Schlüssel für einen normalen Angreifer nicht voneinander ableitbar sein.

Daher kann man es sich erlauben, einen der beiden Schlüssel zu veröffentlichen (daher der Name Public Key) Man veröffentlicht jetzt nur den Schlüssel zum Verschlüsseln und fordert jene Personen, die mit mir kommunizieren wollen, dazu auf, daß sie diesen Schlüssel verwenden müssen. Der Schlüssel zum Entschlüsseln ist allerdings nur im Besitz einer einzigen Person. Wenn der Empfänger für die Rückantwort den Entschlüsselungsschlüssel als Verschlüsselungs-Code benutzt, so können dennoch alle seine Partner die Rückantwort lesen. Man erhält also eine digitale Unterschrift.

Die Sache hat allerdings einen Haken, der in der Verarbeitungsgeschwindigkeit liegt. Für gute Ergebnisse kombinieren professionelle Anwender diese beiden Verfahren: in der Anlaufphase einer Kommunikation - also zum Schlüsselaustausch - wird ein asymmetrisches Verfahren und zur schnellen Übertragung der Benutzerdaten dann das symmetrische Verfahren verwendet.





Die Public-Key-Methode ist bekannt zur Unterschriftenerzeugung, bei dem die Smartcard die Signatur im Augenblick der Autorisierung erzeugt. Solche Unterschriftenerzeugungsmethoden haben zwei Nachteile im Zusammenhang mit der Smartcard (siehe 2.8.8 Sicherheit bei der Geldkarte):


der geheime Signaturschlüssel muß im Gerät gespeichert werden (zumeist auf der Smartcard selbst). Smartcards können erfolgreich decodiert werden und der Signaturschlüssel kann danach mißbräulich verwendet werden.

Public-Key-Methoden brauchen eine hohe Rechenleistung und die Kosten der Smartcard sind unerschwinglich.


So wurde die Signaturtransportmethode entwickelt, um dieses Problem zu lösen. Bei dieser Technik wird die Signaturfunktion in zwei Teile zerlegt. Der rechenintensive Teil der Secret-Key-Funktion wird außerhalb der Smartcard-Umgebung untergebracht. Der zweite Teil, der eine geringe Rechenleistung benötigt und weniger Sicherheit bedarf, wird innerhalb der Smartcard untergebracht.


Digitale Unterschriften (Digitale Signatur)

Der Zweck von digitalen Unterschriften ist die Authenifizierung sowohl des Absenders als auch der Botschaft selbst, um dem Empfänger sicherzustellen, daß der Absender wirklich Ursprung der Nachricht war und daß der Inhalt unterwegs nicht geändert wurde. Digitale Unterschriften sind auch die Grundlage für die Sicherheit der Smartcardsysteme.

Die digitale Unterschrift wird durch die Anwendung einer Berechnung auf die Nachricht erzeugt, der Signaturfunktion. Die Unterschrift selbst erscheint als zufällige Datenfolge und hat nur eine Bedeutung zusammen mit der Nachricht, aus der sie erzeugt wurde. Der Empfänger der Nachricht prüft die Unterschrift durch Anwendung einer zweiten Berechnung auf die gesamte Nachricht, der Prüffunktion. Das Ergebnis der zweiten Berechnung authentifiziert den Absender und den Inhalt der Nachricht.


Für die Erzeugung immer neuer Signatur- und Prüffunktionen für jeden individuellen Nutzer verwendet man eine allgemeine Methode mit einer sehr großen Zahl von Parametern (Schlüssel). Diese Parameter erlauben verschiedenen Anwendern, dieselbe Methode zu verwenden, weil sie verschiedene Ergebnisse mit ihren eigenen einmaligen Schlüsseln erzeugen. Die zwei am häufigsten angewendeten Methoden für die Erstellung und Prüfung digitaler Unterschriften sind die Methoden Secret-Key (Geheimer Schlüssel) und Public-Key (Öffentlicher Schlüssel).


Die digitale Unterschrift verbindet, verschlüsselt die unterschriebenen Daten mit einem speziellen privaten Schlüssel. Der private Schlüssel ist mit dem öffentlichen Schlüssel des Schlüsselpaares verbunden und setzt voraus, daß der private Schlüssel nicht preisgegeben wird. Die digitale Unterschrift hat den Effekt der Bindung des öffentlichen Schlüssels an die Daten. Da jeder sich ein Schlüsselpaar aus einem privaten und öffentlichen Schlüssel kreieren kann, muß ein Mechanismus installiert werden, der den öffentlichen Schlüssel mit einem Eintrag oder einem Namen zuverlässig verbindet. Dies ist die fundamentale Aufgabe eines Zertifikats - die Bindung eines öffentlichen Schlüssels an eine spezielle Identität.

Im Fall des Karteninhabers verbindet das Zertifikat den öffentlichen Schlüssel mit einer Eintragsnummer, wobei lediglich der Karteninhaber, die Zertifizierungsbehörde und das Kreditinstitut den Namen des Eintragsbesitzers kennen. Der Karteninhaber sendet der einziehenden Bank lediglich seine Eintragsnummer und eine Geheimnummer, anhand derer diese die Kartennummer identifizieren kann, jedoch nicht seinen Namen. Somit übernimmt die Eintragsnummer ein Pseudonym für den Karteninhaber. Da ein beliebiges Zertifizierungsinstitut Zertifizierungen mit dem gleichen Inhalt erstellen könnte, muß jedes Zertifizierungsinstitut wiederum von einer höheren Ebene zertifiziert werden.


Der MeChip

Da auch schon Eingaben auf der Tastatur verfolgt werden können, wurde der MeChip entwickelt. Dies führt zu einer noch größeren Sicherheit. Er wird zwischen Tastatur und Computer plaziert und verschlüsselt alle Daten, bevor sie in den PC gelangen. Durch die Verschlüsselung der Daten außerhalb des PCs kann ein Virus mit den verschlüsselten Daten nichts mehr anfangen. Der Chip selbst hat eine reine Verschlüsselungsfunktion und kann keine Daten verarbeiten. Daher kann er nicht durch einen Virus angegriffen werden. Der Einbau zwischen Tastatur und PC ist sehr einfach und von jedermann selbst durchführbar. Die Kosten für die Hardware betragen etwa S 800, -.



Abb.20.: Der MeChip Abb.21.: Einsatz des MeChips


Elektromagnetische Strahlung

100%ige Sicherheit gibt es aber auch hierbei nicht, denn alle Einzelteile des Computers (besonders der Monitor) geben eine elektromagnetische Strahlung von sich, die von außen aufgefangen und möglicherweise abgelesen werden können.


Anwendungen

Schutz von im Netz übertragenen Daten

Fast alle Daten, die sich durchs Netz bewegen, durchlaufen dabei eine unüberschaubare Anzahl von Rechnern. Jeder, der auf einem solchen Rechner über ausreichende Zugriffsmöglichkeiten verfügt, kann die übers Netz übertragenen Daten ablesen oder verändern. Bei diesen Daten kann es sich um E-Mails, um Telefongespräche, Videokonferenzen, Banktransaktionen, medizinische Daten, Firmendaten und vieles mehr handeln. Schon an diesem Punkt wird klar, daß sich die verschlüsselte und signierte Übertragung solcher Daten zum Verhindern unbefugten Ausspähens und Verfälschens anbietet.

Zum Verschlüsseln und digitalen Signieren von E-Mails (auch von anderen Dokumenten) hat sich weltweit im privaten Bereich das Programm PGP (Pretty Good Privacy) durchgesetzt, das auf den Algorithmus RSA basiert. WWW-Verbindungen können mit Hilfe des Secure Socket Layer (SSL), das mittlerweile in den verbreitetsten Browsern eingebaut ist, verschlüsselt und authentisch durchgeführt werden.




Digitales (elektronisches )Geld

Damit meint man im Gegensatz zum elektronischen Zahlungsverkehr (Scheckkarten, Kreditkarten, Überweisungen etc.) ein System, in dem digital symbolisierte Zahlungsmittel ('Münzen" oder "Tokens") ohne Einschaltung Dritter (wie etwa einer Bank) von einer Person an eine andere transferiert werden können. Das Funktionieren eines solchen Systems ist eine wichtige Voraussetzung für die Etablierung einer echten Handelsinfrastruktur im Internet.

Es müssen dabei auch einige Voraussetzungen erfüllt werden:


digitales Geld muß über Computernetze transferiert werden können

digitales Geld darf nicht kopiert und dann wiederverwendet werden können

grundsätzlich darf niemand die Geschäfte eines Benutzers nachvollziehen (Anonymität)

zur Bezahlung muß keine Verbindung zu einem Zentralrechner bestehen

digitales Geld muß zu anderen Benutzern übertragen werden können

eine Einheit über einen bestimmten Betrag muß sich in kleinere Einheiten zerlegen lassen

digitales Geld muß einfach zu benutzen sein

digitales Geld muß kostengünstig sein und

es muß überall einsetzbar sein.


Sogenannte elektronische Geldbörsen, die ihr Einsatzgebiet außerhalb des Netzes im alltäglichen Leben finden sollen, müssen daneben auch über Vorteile gegenüber normalem Bargeld verfügen.


die bereits erwähnte Teilbarkeit von Münzen

Verlusttoleranz

Quittierung und Stornierung von Zahlungen sowie

Geldwechsel zwischen verschiedenen Währungen.


Nur dann wird es von den Kunden akzeptiert.


Sicherheit bei der Geldkarte (Smartcard)

Smartcards sind Karten vorwiegend im ID-1 Format. Im Kartenkörper befindet sich eine integrierte Schaltung. Es gibt Speicherkarten und Mikroprozessorkarten. Der Vorteil von Geldkarten gegenüber Magnetkarten besteht darin, daß sie einen größeren Speicher aufweisen und die Möglichkeit, die Daten auf der Karte sicher zu verschlüsseln.

Abb.21.: Microprozessorkarte

Wie funktioniert der Einsatz der Geldkarte im Internet?

Die Geldkarte stützt sich auf zwei Sicherheitskomponenten, nämlich der Kundenkarte und der Händlerkarte, die bei jeder Zahlungstransaktion in Verbindung stehen. Durch den Austausch von Zertifikaten bestätigen sich beide Teilnehmer die gegenseitige Authentizität bzw. Gültigkeit.


Im klassischen Händlerterminal befinden sich beide Sicherheitskomponenten in einem Gerät. Die beiden im Terminal befindlichen Kartenleser für die Kunden- und die Händlerkarte werden nun durch das Internet räumlich voneinander getrennt. Grundvoraussetzung für eine Kommunikation ist, daß der Kunde und der Händler über einen Internetzugang und ein Kartenlesegerät besitzen. Der Kunde muß sich nur einen Kartenleser zulegen, die Ausstattung des Händlers ist abhängig von den Anforderungen an Durchsatz und Leistungsfähigkeit.


Ein Beispiel: Ein Kunde wählt sich ein Produkt auf der Web-Seite eines Internet-Shops aus und teilt seine Kaufabsicht mit. Um dem Kunden nun die Gewißheit zu geben, mit dem richtigen Händler zu kommunizieren, wird ein Händlerzertifikat übertragen. Dabei ist nicht von einer abgesicherten Anzeige auf einem PC-Monitor auszugehen. Beispielsweise könnte ein betrügerischer Händler mit einer äußerlich identischen Web-Seite eines bekannten Anbieters den Kunden täuschen. Um dies zu verhindern, wird das Zertifikat, das den Händler klar identifiziert, in einer sicheren, separaten Einheit, dem Kundenleser (trusted device), geprüft und dort manipulationsgeschützt angezeigt.


Nachdem der Kunde sich von der Echtheit des Händlers überzeugen konnte, wird in seinem trusted device der zu entrichtende Zahlungsbetrag angezeigt und bestätigt. Anschließend wird der Kunde zum Einstecken der Geldkarte in den Leser aufgefordert. Schließlich wird das zuvor auf die Geldkarte geladene Geld abgebucht und dem Händler gutgeschrieben. Der Händler kann seine erwirtschafteten Umsätze anschließend an die Clearingstellen (Händlerevidenzzentralen) weiterleiten, um die Gutschrift auf dem Konto zu erhalten.


Wie teuer sind die den Ansprüchen an Sicherheit und Qualität aller Seiten gerecht werdenden Kartenleser?

Der Erfolg dieses Systems steht und fällt letztlich mit der Infrastruktur beim Kunden. Der Trend zeigt, daß Kartenleser bald wie ein Floppy-Laufwerk zu jedem PC gehören werden. Von Bedeutung ist auch Preiswertigkeit. Über die entsprechenden Stückzahlen werden dann auch Endkundenpreise von ca. 50 Mark erzielt werden.


Grundsätzlich ist die Bezahlung eine Form der Authentifizierung des Käufers und des Händlers gegenseitig oder gegenüber einer dritten Instanz. Diese Authentifizierung könnte bereits eine Zahlung sein (anonym), wie beispielsweise mit der Geldkarte. Es kann aber auch über ein kontenbasiertes (nicht anonymes) Verfahren, wie zB Lastschriften, ablaufen. Als hardwarebasiertes Verfahren vereint die Smartcard alle benötigten Eigenschaften in sich: Sie ist sicher, portabel, und anwendungsfreundlich.


Die Geldkarte ist sicher, weil

alle Daten vor der Übertragung übers Internet verschlüsselt wurden, sodaß der Empfänger trotzdem zweifelsfrei sieht, von welcher Geldkarte bzw. Händlerkarte diese stammen und zum anderen sicher sein kann, daß die Daten bei der Übertragung nicht verändert wurden

Zahlungen nur bei aktiver Beteiligung der handlichen Geldkarte möglich, also Zahlungen durch einfache Entnahme der Geldkarte aus dem Chipkartenleser unterbunden sind

die Ausgabe von Händlerkarten geregelt und damit verhindert ist, daß sich Unberechtigte als legitime Akzeptanten für Geldkartenzahlungen ausweisen

ein sogenannter Geldkartenakzeptant die Zahlung abwickelt, der bei jeder Zahlung die verläßliche Zuordnung von Händler und Händlerkarte sicherstellt

die Erstellung von Nutzerprofilen verhindert ist, da der Händler keine Zahlungsinformationen und der Geldkartenakzeptant keine auswertbaren Bestelldaten erfährt und schließlich

eine explizite Rückfrage beim Händler gewährleistet, daß Zahlungspflichtiger und -empfänger das gleiche Verständnis über den Bestell- und Zahlungsprozeß haben.


Auswahl der Rahmenbedingungen

Wenn der Kunde alle benötigten Informationen für die Abwicklung der Transaktion erhalten hat, antwortet er mit einem Zahlungsanfrageblock. An dieser Stelle informiert der Kunde den Händler über die ausgewählten Rahmenbedingungen. Abhängig davon kann sich der Kunde authentifizieren. Dieser Bestandteil ist optional, um Käufern auch anonyme Transaktionen zu erlauben. Hierbei werden auch die Zahlungsmittel sowie die dadurch beteiligten Organisationen vereinbart. Wenn eine Authentifizierung stattfinden soll, enthält dieser Block auch Komponenten für die digitale Signatur und das zugehörige Zertifikat. Außerdem wird durch eine Betragskomponente der Warenpreis bestätigt.


Mit diesen Informationen leitet der Händler den Zahlungsvorgang ein. Dazu sendet er einen Zahlungsblock an den Kunden, der das ausgewählte Zahlungsmittel aktiviert. Haben sich Händler und Kunde zum Beispiel auf das Zahlungsmittel Geldkarte geeinigt, startet die Wallet des Kunden mit der entsprechenden Software.


OTP (Open Trade Protocol - siehe 2.8.9 OTP) steuert die weitere Kommunikation (kann den Nachrichtenaustausch nicht lesen). Die OTP-Software packt die Nachrichten nur für den Transport ein und gibt sie auf beiden Seiten an die Geldkarte-Software weiter. Dabei kann nötigenfalls eine weitere Organisation (zB ein Finanzdienstleister) in die Transaktion eingebunden werden. Für den Kunden beginnt nun die Geldkartenzahlung.


Nachdem der Kunde die Chipkarte in das Lesegerät an seinem PC geschoben hat, erscheinen der verfügbare Restbetrag und die zu zahlende Summe auf dem Bildschirm. Bestätigt er die Zahlung, wird der Betrag von Geldkarte abgebucht und auf der Händlerkarte des Händlers gutgeschrieben. Wenn die Geldkarte-Software des Händlers seine OTP-Software über den erfolgreichen Zahlungsvorgang informiert hat, sendet der Händler einen Zahlungsbestätigungsblock an den Kunden, der die Quittung, Zahlungsmitteldaten (zB Protokollnachricht des Zahlungssystems) und Signatur enthält (alle Beteiligten müssen ihre Daten signieren: der Händler sein Angebot, der Käufer seine Bestellung und Zahlung, der Finanzdienstleister die Zahlungsbestätigung und der Lieferant die Lieferbestätigung).


Anschließend sendet der Kunde einen Lieferungsanfrageblock an den Händler. Hierbei werden die zu liefernden Waren beschrieben und der Händler über die gewünschte Lieferart und Anschrift informiert. Bei einer Lieferung über das Internet kann der Kunde zwischen einer ungesicherten und einer gesicherten Lieferung wählen. Wird HTTP als Transportprotokoll genutzt, würde eine gesicherte Lieferung unter Verwendung von SSL erfolgen. Ebenfalls kann dieser Block optional Komponenten für die digitale Signatur und das Zertifikat enthalten. Abschließend antwortet der Händler mit einem Lieferungsantwortblock, der Lieferungsinformationen enthält und der Händler die Art der Auslieferung bestätigt. Die Kauftransaktion mit OTP ist jetzt abgeschlossen.


OTP (Open Trade Protocol)

OTP standardisiert Verfahren zur Abwicklung von Handel mit Privatkunden über das Internet (elektronische Abwicklung von Angebot, Bestellung, Rechnung, Quittung und Reklamation). OTP integriert Zahlungssysteme wie E-Cash, CyberCash, Kreditkartenzahlungen, Geldkarte und Mondex, wobei auch die Steuerung des gesamten Zahlungsvorganges übernommen wird.


SET implementiert dafür eine Mischform: Die Kommunikation zwischen der elektronischen Kasse des Händlers und dem Payment Gateway (System, das dem Händler elektronische Handelsdienste zur Verfügung stellt) des Finanzdienstleisters läuft über das Internet, danach werden die geschlossenen Netze der Kreditwirtschaft verwendet.


Bei Problemen während des Kaufvorgangs müssen alle Beteiligten den bisherigen Verlauf der Transaktion abfragen können. Bei Fehlern ist es notwendig, daß beide Handelspartner wieder in den gewünschten Status zurückgelangen können. Die Systeme müssen dafür sorgen, daß der Kunde die gewünschte Ware und der Händler sein Geld erhält. Bei Lieferschwierigkeiten muß der Kunde sein Geld zurückbekommen. Im Kreditkartenhandling ist dies vorgesehen, die meisten anderen elektronischen Zahlungsmittel berücksichtigen das Thema "Geld-zurück" nicht. Zum Beispiel kann es notwendig sein, die Rückerstattung mittels einer Überweisung durchzuführen. Daran ist zu erkennen, daß an einem einfachen Kaufvorgang nicht nur Händler und Käufer beteiligt sind. Zusätzlich sind drei weitere Rollen zu betrachten: Ein Finanzdienstleister unterstützt die Handelspartner bei der Zahlung, ein Lieferant übernimmt die Auslieferung der Ware und ein Kundendienstzentrum unterstützt bei der Problemlösung. OTP unterscheidet zwischen diesen fünf Rollen, wobei eine Institution auch mehrere von ihnen übernehmen kann (der Händler kann auch die Ware ausliefern).


Um all diese Anforderungen erfüllen zu können, mußte OTP eine Reihe von Eigenschaften erhalten. Erforderlich sind zum Beispiel verschiedene Formen von Rechnungen und Quittungen, Flexibilität und vieles mehr. Daher entschieden sich die Verantwortlichen, als Sprache XML (Extensible Markup Language) zu nutzen, das diese Eigenschaften bereitstellt. Außerdem muß die Möglichkeit bestehen, für existierende Felder benutzerdefinierte Werte einführen zu können. Digitale Signaturen sollen das geforderte Mindestmaß an Sicherheit bieten.


Die Architektur von OTP muß die verschiedenen Zahlungssysteme transparent unterstützen. Eine gesamte Einbindung des Zahlungssystems in OTP würde zu kurz greifen. Bei SET wäre dies zwar möglich, bei chipkartenbasierten Zahlungsmitteln wie Geldkarte und Mondex-Karte aber keinesfalls. Dies ist darin begründet, daß zum Beispiel die gesamte Kommunikation zwischen Geldkarte und Händlerkarte verschlüsselt abläuft, Ver- und Entschlüsselung finden auf den beteiligten Chipkarten statt. Somit hat OTP keine andere Möglichkeit, als die Zahlungssysteme transparent zu transportieren. Außerdem muß die OTP-Architektur die Unabhängigkeit des Protokolls von der darunterliegenden Transportschicht sicherstellen. Momentan ist HTTP - und damit TCP/IP - als Transportschicht vorgesehen. Es muß aber gewährleistet sein, daß OTP von zukünftigen Anderungen oder Erweiterungen dieser Transportprotokolle unbeeinflußt bleibt. Weiterhin muß OTP Möglichkeiten zur Differenzierung vorsehen und nationale Gegebenheiten in bezug auf Sicherheit, gesetzliche Vorschriften und typische Vorlieben beim Handel beachten.


Protokolle

Auf der Basis der Verfahren RC2 und RC4 (symmetrische Verschlüsselungsverfahren) wurden zwei weitverbreitete Sicherheitsprotokolle entwickelt, die heute weltweit in Browsern verfügbar sind. Für Anwendungen im Internet werden besonders verwendet:


SET

SSL

SHTTP


Transaktionsprotokoll SET (Secure Encryption Transaction)

Ein Konsortium, bestehend u.a. aus Netscape, IBM, Visa, Microsoft, American Express, hat sich auf einen Standard geeinigt, um die Übertragung von Kreditkartendaten sicherer zu machen.

Die Verschlüsselung der übertragenen Daten geht auf der Basis des SETs-Standard vor sich. Nachdem der Kunde sich mit dem Händler in Verbindung gesetzt hat, übermittelt dieser ein vorgefertigtes Formular, in das der Kunde seine Daten einträgt. Danach wird das Formular mit einem Public-Key versehen, sodaß nur noch die Visazentrale bzw. der Händler Zugriff darauf hat. Diese Daten gehen direkt in die Visazentrale, wo die Transaktion überprüft und autorisiert wird. Wenn das erfolgreich erledigt wurde, kann der Händler die Transaktion vornehmen.


Notwendige Schritte zur Transaktionsausführung:

Registrierung des Karteninhabers

Registrierung des Händlers

Bestellanforderung des Kunden an den Händler

Zahlungsautorisierung

Zahlungsabwicklung


SET versichert, daß nur der Karteninhaber selbst mit seiner Kreditkarte im Internet bezahlen kann und zusätzlich der Händler von einem Kreditkartenunternehmen geprüft ist. Der Händler, der SET-Transaktionen akzeptiert, daß er es mit einem legitimierten Karteninhaber zu tun hat. Sowohl Händler als auch Karteninhaber profitieren von einer Lösung, die alle Zahlungsvorgänge beim Kreditkarteneinsatz automatisiert abwickelt.

Der Vorteil von SET besteht darin, daß Kreditkartennummern unsichtbar übers Netz geschickt werden. Ein Auftrag wird elektronisch unterschrieben (digitale Signatur) und an den Händler geschickt. Dieser fügt wiederum seine eigenen Daten hinzu, wobei er nur die für ihn relevanten Daten des Kunden lesen kann. Diesen gesamten Datensatz schickt er nun an seine Bank, die die entsprechenden Daten entschlüsselt, vom SET Server die notwendigen Schlüsselinformationen des Käufers erhält und damit zB die Kreditkartennummer entschlüsselt und die weiteren Schritte vornimmt.


Kreditkartenbezahlungen sind im Internet die häufigste Zahlungsmethode. Um diese Zahlungsmethode sicher zu gestalten, eignet sich eben SET sehr gut. Aus diesem Grund wird hier auf die Dual Signature eingegangen, die bei SET zum Einsatz kommt.

Wie oben schon erwähnt werden mit der Bestellung auch verschlüsselte Kreditkarteninformationen an den Händler übertragen, die er nicht lesen kann. Die Kreditkarteninformation leitet der Händler überprüft an seine Bank weiter. Um den Händler trotz der unsichtbaren Zahlungsweise Sicherheit zu geben und den Kunden vor Mißbrauch zu schützen, verwendet SET hier eine besondere Art der Signatur, Dual Signature. Damit wird erreicht, daß Bestellung und Zahlungsanweisung eindeutig einander zuzuordnen sind, ohne daß der Händler die Zahlungsanweisung bzw. die Bank die Bestellung einsehen kann.

Die Dual Signature erlaubt es, zwei getrennte Nachrichten mit einer gemeinsamen Unterschrift so zu verbinden, daß sie nicht aus dem Zusammenhang gerissen und mißbraucht werden können. Beide Nachrichten können aber getrennt versendet und durch ihre "Doppelunterschrift" als richtig bestätigt werden.

Während bei normalen Unterschriften der Fingerabdruck einer Nachricht verschlüsselt wird, werden bei Dual Signature von beiden Nachrichten solche Fingerabdrücke erstellt und aneinander gehängt.


Die Beteiligten von SET:

Karteninhaber

Händler (akzeptiert elektronische Bezahlungen)

Bank des Händlers (unterstützt kreditkartenbasierte Geschäfte)

Payment Gateway (ein System, das dem Händler elektronische Handelsdienste zur
Verfügung stellt)

Zertifizierungsinstitut  (stellt elektronische Zertifikate für Händler, Banken und
Karteninhaber aus)

Finanznetzwerk der Banken und Kreditkartengesellschaften


SSL (Secure Sockets Layer)

Bestandteil von SSL ist die Authentifizierung des Servers mittels digitaler Zertifikate. SSL ist ein im Netscape Browser integriertes Verschlüsselungsverfahren, das eine sichere Übertragung (daß die Daten unverändert am Server ankommen) der gesendeten Informationen garantiert.

SSL benutzt dabei die Verschlüsselungstechnologie der RSA Data Security Inc.


S-HTTP

HTTP (HyperText Transfer Protocol) ist ein Verfahren zur Datenübertragung im WWW.
S-HTTP soll sicherstellen, das eine bestimmte Meldung sicher von A nach B kommt. Für das Protokoll spricht zwar seine Flexibilität, bislang finden sich aber kaum Ergänzungen im Netz, da die beiden meistgenutzten Webbrowser (Netscape Navigator und Internet Explorer) S-HTTP nicht unterstützen.


Sicherheit bei verschiedenen Anwendungen

Sicherheit bei Zahlung mit Kreditkarte

Soll also im Netz mit der Kreditkarte gezahlt werden, müssen zwei Dinge sichergestellt sein: Zum einen müssen die Daten möglichst abhörsicher transportiert werden, und zum anderen muß sich der Kunde von der Authentizität des Anbieters vergewissern können. Auch beim Senden von Kreditkarteninformationen über das Internet zeigen sich die drei Angriffspunkte: Zielserver, Übertragung und Kunden-PC. Die Übertragung der Daten, an dieser Stelle die Kreditkarteninformationen, ist das Hauptproblem, denn dabei können die Kartennummern ausspioniert werden. Die Lösung des Problems sollen die im vorhin beschriebenen Protokolle bieten, die den Datenfluß bei der Datenübertragung verschlüsseln.


Sicherheit bei First Virtual

Hier wird dieses Problem der Kreditkartenzahlung umgangen, indem keine Kreditkarteninformationen durch das Netz gesendet werden. Bei First Virtual arbeitet man mit einem Bestätigungsverfahren. Die Kontoeröffnung läuft in drei Schritten ab: Zuerst teilt man dem Unternehmen Namen, Adresse, E-Mail-Adresse und ein mindestens achtstelliges Paßwort mit. Danach erhält der Kunde eine E-Mail mit einer Telefonnummer und einem zwölfstelligen Code. Über die Nummer erreicht man einen Telefoncomputer, der nach erfolgreicher Legitimation durch den Code die Kreditkarteninformationen entgegennimmt. Dann bekommt man per E-Mail eine Virtual-PIN. Beim Kauf im Internet gibt man dann den Vertragspartnern von First Virtual nur die Virtual-PIN an. Die Anbieter wenden sich mit der PIN und dem Rechnungsbetrag an First Virtual, welche darauf per E-Mail beim Kunden nachfragt, ob der Betrag akzeptiert wird. Nur wenn der Kunde diesen Betrag bestätigt, weist First Virtual ihn an.

Dieses kreditkartenbasierte Zahlungsverfahren ist zwar ziemlich sicher, doch hat es auch einige Nachteile: Zum einen können mit First Virtual nur Produkte, die übers Internet geliefert werden können (Software, Informationen, Musik, u.ä.) gekauft werden. Zum zweiten eignen sich Kreditkarten nicht für Kleinbeträge. Außerdem ist es nicht wünschenswert, wenn irgendwelche Stellen alle Transaktionen verfolgen können, wie das im Fall der Zahlung mit Kreditkarten der Fall ist. Hier lassen sich Käuferprofile erstellen und der Kunde wird zum gläsernen Kunden. Besser ist es, wenn der Zahlungsvorgang anonym erfolgen kann, wofür sich digitales Geld eignet.


Sicherheit bei Zahlung mit digitalem Geld

Besondere Anforderungen gelten beim elektronischen Geld (E-Cash). Es wird von Jedermann akzeptiert und man sieht der Banknote nicht an, durch welche Hände sie gegangen ist. Zur Verbindlichkeit kommt die Anforderung nach Anonymität hinzu.

Digitales Geld (CyberCash, Digicash, ) wird auf der Festplatte des Computers gespeichert und kann wie ein Geldschein im Portemonnaie verwendet werden. Will man im Internet bezahlen, schickt man dem Händler einfach den Betrag durchs Datennetz zu. Um von diesen digitalen Geldscheinen auf der Festplatte nicht einfach Kopien erzeugen zu können, enthält jede digitale Banknote eine Seriennummer, welche das Geldinstitut bei der Einlösung speichert. Somit kann ein digitaler Geldschein nicht mehrfach eingelöst werden. Als weiteren Schutz enthält digitales Geld eine digitale Unterschrift des ausgebenden Kreditinstitutes. Der Käufer des Geldes bleibt durch die sogenannte blinde Signatur unbekannt. Der Händler kann die Signatur des Geldes prüfen, ohne sich mit der Bank in Verbindung setzen zu müssen. Nur bei einer zweifachen Bezahlung kann die Bank die Daten des Kunden ermitteln. Auch einer zweifachen Einlösung durch den Händler ist ein Riegel vorgeschoben. Damit die Währung nicht von der Festplatte oder auf dem Weg durchs Netz zum Händler gestohlen bzw. abgehört wird, ist die Währung auf der Festplatte, genauso wie der Datenverkehr im Internet, verschlüsselt.







Sicherheit bei Datenverkehr zwischen Kreditinstituten

S.W.I.F.T (Societey for Wordwide Interbank Financial Telecommunikation - betriebt Datenfernübertragungsnetze zwischen Kreditinstituten) ermöglicht es, Nachrichten im Internet zwischen Kreditinstituten zu übermitteln. S.W.I.F.T. hat sich zu einem System entwickelt, das nicht nur den internationalen Zahlungsverkehr, sondern in dem auch Inkasso- bzw. Akkreditivgeschäfte, Wertpapier-, Devisen-, Edelmetallgeschäfte usw. abgewickelt werden.


Sicherheit bei Digicash

Digicash verwendet sogenannte Token, die die Nutzer bei ihrer Bank in Geld umwandeln können. Jeder Token kann nur einmal verwendet werden und wird dann zur ausgebenden Bank zur Prüfung und Inzahlungnahme weitergeleitet.

Die Verschlüsselung basiert auf dem Verfahren des öffentlichen Schlüssels. Die Münzen von der Bank werden mit einem geheimen Schlüssel gekennzeichnet auf die Smartcard geladen und der Händler prüft dann die Echtheit der Münzen mit einem öffentlichen Schlüssel. Dieses System ist grundsätzlich sehr sicher, weil eventuelle Mißbräuche der Werte auf der Smartcard nicht gespeichert werden.


Sicherheit beim Einkaufen mit CyberCash

CyberCash benutzt eine sichere 1024 Bit Verschlüsselung zur Codierung der Transaktionsdaten. CyberCash ist nicht münzbasierend, sondern überträgt nur Kreditkartenangaben auf sicherem Weg.


Die Registrierung muß bei der Bank, von welcher er die Wallet-Software bezogen hat, erfolgen. Erst dann kann der Kunde am CyberCash-System teilnehmen. Dabei erklärt der Kunde, daß er eine eindeutig identifizierte CyberCash-Geldbörse (durch die Wallet-Id) eingerichtet hat und über die darin eingebundenen Zahlungsmittel im Rahmen der CyberCash-Bezahlverfahren verfügen will. Die Bank prüft die Legitimation des Kunden und seine Verfügungsgewalt über die jeweiligen Zahlungsmittel, indem der Kunde einen Personalausweis und die EC-Karte bzw. einen anderen geeigneten Kontonachweis vorlegen muß.

Der Händler legt seiner Bank statt der Wallet-Id seiner Bank die Kennung für das CashRegister (Merchant-CCId) vor. Somit registriert sich der Händler bei der Bank.


Der Zugang zur CyberCash-Geldbörse ist durch ein Paßwort geschützt, das mindestens acht Zeichen lang ist. Bei dreimaliger Falscheingabe des Paßwortes ist die jeweilige Geldbörse dauerhaft gesperrt. CyberCoin-Beträge, die gegebenenfalls noch geladen waren, werden zurück auf das Bankkonto des Kunden übertragen.

Die Vertraulichkeit der persönlichen Daten des Benutzers der CyberCash-Geldbörse wird mit der Verschlüsselung nach dem DES-Verfahren gesichert. Wenn Informationen zum Händler und von dort zum CyberCash-Gateway übertragen werden, wird automatisch eine Verschlüsselung der zahlungsrelevanten Daten durchgeführt. Mit der Verschlüsselungstechnik DES wird die eigentliche Nachricht verschlüsselt. Der DES-Schlüssel ist für jede Transaktion einzigartig und wird vor dem Transport mittels des geheimen Schlüssels des Absenders (RSA-Verfahren) verschlüsselt. Mit Hilfe des bei der Anmeldung hinterlegten öffentlichen Schlüssels kann das CyberCash-Gateway jede Nachricht entschlüsseln und ihre Echtheit (Schutz vor Anderungen) und ihren Ursprung (Schutz vor Abstreiten der Urheberschaft) bestätigen.

Sollte der Benutzer einmal die Verfügungsgewalt über die Wallet-Dateien verlieren (zB Diebstahl), kann er unter Angabe des vorher festgelegten Sperrcodes und der Wallet-Id seine CyberCash-Geldbörse dauerhaft sperren lassen.


Buchführung bei CyberCash

Die Konsumenten- und Händler-Software führen über alle Transaktionen Buch. Ebenfalls protokollieren auch die Gateway-Server ihre Aktionen, sodaß die Gültigkeit von Transaktionen im Streitfall nachgewiesen werden kann.


Die Entschlüsselung der Auftragsdaten, die der Händler zusammenstellt, werden nicht an die Bank geschickt, sondern an CyberCash. CyberCash übernimmt die Entschlüsselung und sendet (außerhalb des Internet) die Daten an die Bank, die die Inhalte überprüft und eine Rückantwort gibt. Diese wird vom Händler zugestellt, der die weiteren notwendigen Schritte veranlaßt.


Sicherheit bei NetCash

Um sicherzustellen, daß das Geld nicht digital kopiert werden kann, unterhält die Bank eine Datei mit Seriennummern. Jeder Coupon ist einmalig und kann auch nur ein einziges Mal verwendet werden. Was auf der einen Seite ein perfekter Kopierschutz ist, wird auf der anderen Seite zum perfekten Überwachungsinstrument. Jeder Coupon kann von der Bank zum Kunden über den Händler verfolgt werden, und damit kann festgestellt werden, wer was wann wo gekauft hat.


Praktisches Beispiel: Warenkorb


Aufbau

Die Applikation stellt einen Warenkorb anhand eines Büchershops dar. Die Startseite bietet die vorhandenen Büchersparten an. Von dort aus kann man sich alle Bücher zu dieser Sparte anzeigen lassen. Interessiert einen dann ein Buch, so ist man nur noch einen Mausklick von einer genauen Beschreibung entfernt. Ist man dann gewillt das Produkt zu kaufen, so kann man es gleich mal in den Warenkorb legen / der Shoppingliste hinzufügen. Wenn nicht kehrt man einfach über die Navigationsleiste, die auf jeder Seite gleich erscheint, an den Anfang zurück. Hat man die Shoppingliste zu seiner Zufriedenheit erstellt und möchte nun die Waren bestellen, so läßt man sich einfach den Warenkorb anzeigen und klickt auf den Button 'Bestellen'. Jetzt gelangt man zu einem Login-Menü. Entweder loggt man sich mit einem bereits erstellten Kundennamen und -paßwort ein, oder man erstellt ein neues Konto. Egal was man tut, man muß dann weitere persönliche Daten eingeben / überprüfen. Bevor man nun die Bestätigung bekommt, daß die Bestellung erfolgt ist, muß man noch seine bevorzugte Zahlungsart angeben. Dann darf man sich E-Shopper nennen


Allgemeines zur Code-Dokumentation

Code - was ist das? Nun, hier ist damit das gemeint, was hinter dem Shop steht, der Quellcode, Schleifen und Funktionen, Variablen und Datensätze, alles vereint in Active Server Pages Dateien.

Schwierig? Um das ganze einfacher zu machen sehen wir uns einmal den Aufbau, das Grundgerüst einer Html-Datei (Hypertext Markup Language - die Sprache des Internet) an. Eine ASP-Datei ist nämlich nichts Anderes als eine Html-Datei mit ein wenig ASP-Code.


Das Grundgerüst einer Html-Datei:


<html>

<head>

<title> Der Name der Datei, der in der Windows-Startleiste angezeigt

wird

</title>

</head>

<body>

Hier der Inhalt der Html-Datei, der auch wirklich angezeigt wird

</body>

</html>


Tippt man diesen simplen Code genau so in einen Text-Editor (zb Notepad) ein und benennt diese als *.htm/*.html, so erhält man eine einfachste Html-Datei die mit einem Internet-Browser angezeigt werden kann.

Die Schlüsselwörter (so werden vom System belegte Wörter, die man zB nicht für Variablen verwenden darf, genannt) zwischen den eckigen Klammern (<Schlüsselwort> ) sind Bestandteil der Sprache HTML. Diesen Code werden wir in der Folge nicht erklären, außer es sollte zum Verständnis unbedingt notwendig werden. Interessierte können zB auf http://www.teamone.de/selfhtml mehr über Html-Code erfahren.

Wie erkennt man nun den wahren Programm-Code, der die Applikation ausmacht? Durch eckige Klammern mit Prozentzeichen: <% Applikations-Code %>

Wenn Sie nun schon ein wenig Bekanntschaft mit Html und Ahnlichem gemacht haben werden Sie bemerken, daß das nicht ASP-Code sondern VB-Script-Code ist.

Nun, ASP ist eigentlich keine Programmiersprache sonder ein Produkt Microsofts, der das Einbinden von Datenbanken in Html-Dateien ermöglicht. Die Datenbank-Befehle sind eigentlich auch im VB-Script eingebunden, aber nicht jeder kann Dateien mit solchen Befehlen nutzen. Zuerst einmal erkennt man solche Dateien an der Endung .asp, verwenden kann man sie nur wenn man den richtigen Web-Server auf seinem Host installiert hat. Dieser Server ist natürlich das zu ASP gehörige oben erwähnte Microsoft-Produkt, genannt Internet Information Server, kurz IIS. Er arbeitet nur auf Windows NT Servern. Für Windows 9x gibt es den vergleichsweise eher trivial anmutenden Personal Web Server.

Also, wir wissen jetzt, daß VB-Script den eigentlichen Programmcode ausmacht und daß dieser mit <% beginnt und mit %> endet. Diesen werden wir in der Folge erklären, wo es nötig ist.

Obwohl wir nur den VB-Script Code erklären, führen wir zum besseren Verständnis immer die vollständige ASP-Datei an.

Der erklärende Text wird zur Unterscheidung vom Text der Html-Datei kursiv gedruckt.


Der Code

default.asp

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>


Hier gleich eine Eigenheit - bevor noch die Html-Datei beginnt wird hier schon eine Datei eingebunden. Dies ist eine sogenannte Cascading-Style-Sheet-Datei - dort kann man grafische Konventionen für bestimmte Zustände und Tags formulieren die dann für jeden Tag, der in der CSS-Datei erwähnt wird, zutreffen.

Ein Beispiel: In der CSS-Datei weisen wir dem body-tag eine Hintergrundgrafik zu - folglich hat jede Datei die diese CSS-Datei implementiert diese Hintergrundgrafik.


<!-- Ein Kommentar -->

Die inkludierten Dateien werden oft zwischen Kommentarzeichen gesetzt um sie so vor alten Browsern zu verstecken, die statt die Datei zu inkludieren Text ausgeben würden. Neue Browser erkennen diesen Trick und inkludieren die Datei trotzdem, obwohl sie zwischen Kommentarzeichen steht.


<% const conimgNotFound = '../images/imgNotFound.gif' %>


Diese Konstante brauchen wir später, falls für eine Sparte oder einen Artikel kein Bild vorhanden sein sollte.


<%

idSession2 = Request.QueryString('idSession2')


Wenn der User schon auf der Homepage war, dann kennen wir seine ID jetzt wieder, genauso

wie wir die ID auf jeder weiteren Seite abfragen werden. (Der Variable idSession2 wird ein QueryString zugwiesen, das ist an die URL (Internetadresse) angehängter Code.) (Die ID muß 'händisch' von Seite zu Seite (Datei zu Datei) weitergegeben (und abgefragt) werden, sonst ist sie verloren.) Wenn der User noch keine ID hat, dann ist folgender IF Befehl true und erzeugt eine neue ID.


If idSession2 = '' OR idSession2 = NULL Then


Hier wird also erst mal festgestellt ob idSession2 leer ist oder nicht. Wenn ja, dann geschieht folgendes (Diese Befehlsstruktur nennt man einen IF-Befehl und ist eine Kontrollstruktur. Seine Syntax sieht so aus: IF x = y Then Befehle END IF):


RANDOMIZE(time())


Und damit beim Zuweisen einer Zufallszahl der Algorithmus, der die Zufallszahlen erzeugt, auch immer mit einer anderen Zahl rechnet, weisen wir dem Algorithmus den Parameter 'time' zu, der dem Algorithmus immer eine andere Rechenkonstante übergibt. (abhängig von der Uhrzeit des Host-Rechners)


idSession2 = Int(30000 * Rnd +1) & Date()


Als erstes erzeugen wir jetzt eine Zufallszahl im Integer-Format, die zwischen 1 und 30001 liegt, dann hängen wir das aktuelle Datum an. Wenn später mittels der idSession2 Daten aus einer Tabelle gefiltert werden, so haben wir größere Sicherheit, daß nicht 2 User die gleiche ID haben und sich deren Shopping-Touren vermischen - wenn wir pro Tag 30 Kunden hätten, läge die Wahrscheinlichkeit einer übereinstimmenden ID zweier User trotzdem nur bei 1:1000.


End If


Das obligatorische Ende des IF-Befehls.


%>


<%


SET idConn = Server.CreateObject('ADODB.Connection')


Hier setzen wir eine beliebige Objektvariable (idConn) und weisen ihr die Datenbankverbindung zu.


SET RS = Server.CreateObject('ADODB.RecordSet')


Hier legen wir ein Objekt vom Typ RecordSet an und instanziieren es - wird aus der Datenbank ein Datensatz (Recordset) gelesen, so wird er der Objektvariablen (hier: RS) zugewiesen.


idConn.Open 'DSN = shopsysdata'


Die DSN entspricht dem Namen der Datenbank im ODBC Fenster - ODBC (Open Database Connectivity ist notwendig, damit der Zugriff auf die Datenbank erst möglich wird)

(Start|Einstellungen|Systemsteuerung|ODBC)


SET idConn2 = Server.CreateObject('ADODB.Connection')


Hier setzen wir eine zweite Objektvariable mittels der wir später aus der Datenbank zufällig Farben ermitteln


%>


Kleiner Hinweis: am Ende des VB-Scripts bauen wir eine Datenbankverbindung auf. Dies wird später immer mittels der inkludierten Datei idConnection.inc gelöst.


<!-- #include file = '../styles.inc' -->


Diese Datei ist die Navigationsleiste, die in jede Datei eingeschlossen wird.


<html>


<head>


<title> Warenkorb-Standardpage</title>


</head>


<body> <font color = 'white'>


<hr width = '90%'> ein Trennstrich


<br> eine Absatzmarke


<p id = 'Gruppen' Class = 'clsBold'> ein Absatz mit CSS Formatierungen

Willkommen!<br>

<div id = 'Gruppen'> ein Bereich mit CSS Formatierungen

Hier sehen Sie unsere verschiedenen B&uuml;chersparten.<br>

Bitte w&auml;hlen Sie eine Gruppe aus<br>

um Artikel anzuzeigen.<br>

;-)) ein Smiley

</div>

</p>


<%

RS.Open 'SELECT * FROM Sparte ORDER BY nameSparte ASC', idConn


Es werden alle Datensätze (Select *) aus der Tabelle Sparte gewählt. Dazu verwendet wird die Verbindung idConn.


%>


Hier muß ich die Sparten aus der Database abfragen und möglichst in einer Tabelle schön geordnet mit verlinkten Bildern anzeigen ;-))


<%

varA = 1


Hier setze ich eine Variable die ich am Ende der Tabelle dringend für das Design (den Zeilenumbruch nach je 3 Sparten) benötige


%>

<center>


Wir zentrieren die Tabelle mal und beginnen sie hier, wobei der Zelleninhalt immer einen Abstand von 25 zum Zellenrand haben soll.


<table cellpadding = 25>

<tr> Die erste Zeile

<%

DO WHILE NOT RS.EOF


Mache solange du nicht das Ende der Datei erreicht hast (Diese Struktur ist eine abweisende Schleife, das heißt es werden immer dieselben Befehle durchgeführt, solange ein bestimmter Zustand zutrifft; Syntax: Do While (NOT) Zustand Befehle Loop)


lnkImage = RS('imgSparte')


Nebenbei wird schnell noch eine beliebige Variable (lnkImage) gleich dem Bildpfad gesetzt, der aus der Tabelle gefiltert wird. lnkImage ist also je nach dem in welcher Zeile der 'Datenzeiger' gerade steht ein anderes Bild, oder besser gesagt der Pfad davon.


If lnkImage = '../images/' Then

lnkmage = conimgNotFound

End if


Wenn mal kein Pfad angegeben ist (dann gibts den obigen Standardwert - in der Tabelle definiert), dann soll lnkImage gleich einem Universalbild sein (conimgNotFound) - das wurde hoffentlich als Konstante am Anfang dieses Skripts gespeichert ;-))


%>

<td> die erste Spalte

<a href = 'artikel.asp?idSession2 = <% = idSesson2%> &Sparte = <% = RS('idLnk') %> &idUser2 = <% = idUser2%> '>


Hier wird ein Bild (lnkImage) in einen Link eingebettet. Damit die Session# etc. nicht verlorengeht wird das alles an den Link angehängt ;-)


<%


nun moechten wir, dass zu jedem Bild auch der Untertitel erscheint, wenn man mit dem Mauszeiger auf dem Bild steht :-) (ALT ist dafuer im img-tag zustaendig)


varB = 1 wir setzen wieder eine Hilfsvariable

longNameSparte = RS('longNameSparte') hier wird der vollstaendige Spartenname, den wir als Untertitel verwenden, abgespeichert


DO WHILE NOT varB> 1 %> mache solange die Hilfsvariable nicht groesser eins ist


<IMG Border = '0'

SRC = '<% = lnkImage%> ' width = '130'

height = '75' ALT = '<% =

longNameSparte %> '>


hier wird das Bild eingefügt; SRC und ALT sind dynamisch und werden nach je dem LOOP mit dem Movenext-Befehl auf den nächsten Datensatz gesetzt (das Loop der umgebenden Schleife ist gemeint)


<% varB = varB+1


wenn das Bild eingefügt wurde stellt man noch sicher, daß diese Schleife sich nicht wiederholt (varB = varB+1 -> = 2) - LOOP beendet dann die DO WHILE Schleife wieder. Damit beim nächsten Schleifendurchlauf der umgebenden Schleife varB wieder = 1 es ist ja direkt über dieser Schleife (aber außerhalb) definiert varB = 1 !!


LOOP das obligatorische Ende der DO WHILE Schleife

%>


</a> Das Ende des Links, in den die Grafik eingebettet ist


<br>

<center> Der Zeilenumbruch und das Zentrieren bewirkt, daß in derselben Zelle wie das Bild, unterhalb (br) und zentriert (center) der Titel steht (erneut als Link).


<table> <tr> <td background = '../images/stylesbg.jpg'>

<a href = 'artikel.asp?idSession2 = <% = idSession2%> &Sparte = <% = RS('idLnk') %> &idUser2 = <% = idUser2%> '>

<%

idConn2.Open 'DSN = shopsysdata'

und wir öffnen auch hier die Verbindung

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

eine andere Variante um Daten aus der Tabelle zu holen

RANDOMIZE(Time())

varC = Int(32 * Rnd +1)

um zufaellig eine Farbe ermitteln zu koennen weisen wir varC eine Zufallszahl zu


DO WHILE NOT RS2(TRIM('idFarbe')) = varC AND NOT RS2.EOF


Diese Schleife setzt den Datensatz so lange um eins weiter, bis varC gleich dem Wert id im Datensatz ist


RS2.MoveNext

LOOP

color = RS2('Farbe')


jetzt 'sitzt' der Datensatzzeiger auf dem richtigen Datensatz und wir weisen einfach den aktuellen Farbwert der Variablen color zu


RS2.Close

idConn2.Close


die Verbindungen werden wieder geschlossen - sie werden ja nur hier benötigt und würden uns vielleicht stören wenn wir sie mit Bereichen der umgebenden Schleife          überlappen lassen würden; zu Deutsch - dann zB könnte es sein, daß ein anderer Befehl auf den Datensatz zugreifen will, aber nicht kann, weil er hier noch offen ist


%>

<font color = '<% = color %> ' size = '+1' family = 'Comic Sans MS'> <% = RS('nameSparte') %> </font>

hier weisen wir die Zufallsfarbe und die jeweilige Sparte zu

</a>

</td> </tr> </table>

<center>

</td>


<%

If varA = 3 then

varA = 0


hier wird ein beliebiger Zaehler nach jedem in die Tabelle gespeisten Datensatz um 1 erhoeht - wenn 3 Datensaetze eingespeist wurden wird der Zaehler auf 0 zurueckgesetzt und


%>

</tr>

<tr>

. eine neue Zeile wird begonnen

<% End If

varA = varA+1

RS.MoveNext

LOOP


Hier wird der Zähler erhöht, der Zeiger auf den nächsten Datensatz gesetzt und die umgebende Schleife wiederholt (unabhängig vom If-Befehl)


%>

</tr>

</table>

</center>

</font>

</body>

</html>


<%

RS.Close

idConn.Close


Schließt die Verbindung wieder


%>


artikel.asp

<!-- #include file = '../universalskripts/idConnection.inc' -->

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>


<% const conimgNotFound = '../images/imgNotFound.gif'


Folgendes geschieht nur fuer das Anzeigen eines netten Titels


Sparte = Request.QueryString('Sparte')

IF Sparte = '' Or isnull(Sparte) Then Sparte = Request.Form('Warengruppen')

RS.Open 'SELECT * FROM Sparte WHERE idLnk = ' & Sparte, idConn

nameSparte = RS('nameSparte')

longNameSparte = RS('longNameSparte')

RS.Close

%>

<!-- #include file = '../styles.inc' -->


<html>

<head>

<title>

Unsere Artikel der Sparte <% = nameSparte %> Und hier ist auch schon der Titel

</title>

</head>

<body> <font color = 'white'>

<hr width = '90%'>

<br>

<p id = 'Gruppen' Class = 'clsBold'>

Willkommen bei unseren Artikeln!<br>

<div id = 'Gruppen'>

Hier sehen Sie die gesamte Auswahl unserer<br>

Artikel der Kategorie <% = longNameSparte %> .<br>

Bitte w&auml;hlen Sie für eine genaue<br>

Beschreibung einen<br>

Artikel aus<br>


</div>

</p>


<%

RS.Open 'SELECT * FROM Artikel WHERE idLnk = ' & Sparte, idConn

varA = 1

%>


Wir öffnen die Tabelle Artikel und wählen alle Datensätze aus, bei denen idLnk (Verknüpfung von Tabelle Sparte zu Tabelle Artikel) der gerade ausgewählten Sparte entspricht - so können die Artikel angezeigt werden, die jeweils zur ausgewählten Sparte gehören.

Die Variable varA wird dazu benutzt, daß Jede Zeile der folgenden Tabelle genau drei Spalten hat.


<center>

<table cellpadding = 25>

<tr>

<%

DO WHILE NOT RS.EOF


Hier erzeugen wir die Tabelle mit einer Schleife - es werden 'solange Artikel aus der Artikeltabelle geholt, bis kein Datensatz mehr vorhanden ist', zu -Deutsch werden einfach alle Datensätze aus der Tabelle gelesen (unter den oben schon beschriebenen Bedingungen)

Mit jedem einzelnen dieser Datensätze wird eine Vielzahl von Aktionen durchgeführt, es wird der Bildpfad zum Anzeigen des Bildes herausgefiltert, der Untertitel des Bildes, der Name des Artikels und - bei jedem Schleifendurchlauf wird die oben gesetzte Variable varA um 1 erhöht, bis sie 3 ergibt, dann wird sie wieder auf 1 gesetzt. Sinn: Wenn varA = 3 wird varA nicht nur wieder 1, es wird auch in der Tabelle eine neue Zeile begonnen.


lnkImage = RS('imgArtikel')

IF lnkImage = '../images/' THEN lnkImage = conimgNotFound END IF


Wenn kein Bildpfad angegeben wurde, trifft der Standardwerte dieser Zelle zu ('../images') und es wird das Standardbild ('Ooops, momentan kein Bild verfügbar') eingeblendet.


%>

<td>

<center>

<a href = 'xartikel.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel') %> &nameSparte = <% = nameSparte %> '>


Der Link, auf den das Bild des jeweiligen Artikels verweist, inklusive allen Informationen die in der nächsten Datei wieder mittels Request.QueryString abgerufen werden.


<%

longNameArtikel = RS('longNameArtikel')

%>

<IMG Border = '0' SRC = '<% = lnkImage %> ' width = '100' height = '150' ALT = '<% = longNameArtikel %> '>


Das Bild inklusive Untertitel


</a>

<br>


<table> <tr> <td background = '../images/stylesbg.jpg'>

<a href = 'xartikel.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel') %> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> '>


Es erwies sich als beste Möglichkeit um die Position des Titels im Griff zu haben, diesen innerhalb der Tabelle erneut in eine Tabelle zu verpacken.

Es folgt: die zufällige Auswahl einer Farbe für die Schrift nach dem selben Prinzip das wir bereits kennen, ich erkläre also nicht nochmals.


<%

idConn2.Open 'DSN = shopsysdata'

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

RANDOMIZE(Time())

varC = Int(32 * Rnd +1)

DO WHILE NOT RS2(TRIM('idFarbe')) = varC AND NOT RS2.EOF

RS2.MoveNext

LOOP

color = RS2('Farbe')

RS2.Close

idConn2.Close

%>

<font color = '<% = color %> ' size = '+1' family = 'Comic Sans MS'> <% = RS('nameArtikel') %> </font>

</a>

</td> </tr> </table>

</center>

</td>

<%

If varA = 3 then

varA = 0

%>

</tr>

<tr>

<% end if

varA = varA+1


Hier das berüchtigte varA = varA+1; darüber die If-Struktur die bei varA = 3 ausgeführt wird.


RS.MoveNext Setzt den Datensatzzeiger auf den nächsten Datensatz

LOOP

%>

</tr>

</table>

</center>

</font>

</body>

</html>


<%

RS.Close

idConn.Close

%>


xartikel.asp

<!-- #include file = '../universalskripts/idConnection.inc' -->

<!-- #include file = '../styles.inc' -->

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>

<% const conimgNotFound = '../images/imgNotFound.gif' %>

<% Artikel = Request.QueryString('Artikel') %>

<% nameSparte = Request.QueryString('nameSparte') %>


Hier werden der Artikel- und der Spartenname aus dem QueryString (an URL angehangener Code) geholt.


<% RS.Open 'SELECT * FROM Artikel WHERE idArtikel = ' & Artikel, idConn

nameArtikel = RS('nameArtikel')

longNameArtikel = RS('longNameArtikel')


Hier werden die Bezeichnungen (kurz, lang) für den Artikel aus der Datenbank geholt, dann wird diese Tabelle wieder geschlossen.


RS.Close

RS.Open 'SELECT idSession, idArtikel From Bestellung Where idSession = ' & ''' & idSession2 & ''' & 'AND idArtikel = ' & Artikel, idConn

IF RS.EOF THEN command = 'insert' ELSE command = 'change' END IF %>


Hier wird in der Tabelle gesucht, ob genau dieser Artikel bereits im Warenkorb liegt, oder nicht - je nachdem wird command mit dem insert oder change belegt und löst dann die gewünschte Reaktion in der warenkorb.asp aus - es wird so verhindert, daß ein Artikel zwei mal angezeigt wird, der Warenkorb wird um die Anzahl der gewählten Artikel erweitert, dh wenn vorher 3 solche Artikel im Warenkorb waren und ich jetzt wieder 1 dieser Artikel einfüge steht dann nicht eine Zeile mit 3 mal und eine mit 1 mal diesem Artikel, sondern nur eine Zeile mit 4 mal diesem Artikel da.


<%

RS.Close

RS.Open 'SELECT * FROM Artikel WHERE idArtikel = ' & Artikel, idConn

%>


<html>

<head>

<title>

Artikel <% = nameArtikel %> der Sparte <% = nameSparte %>

</title>

</head>

<body> <% = varArt %>

<%

varA = 1

%>

<FORM ACTION = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel') %> &idUser2 = <% = idser2 %> &command = <% = command %> &nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<center>

<table width = '100%'>

<tr>

<%

lnkImage = RS('imgArtikel')

IF lnkImage = '../images/' THEN lnkImage = conimgNotFound END IF

%>

<td align = 'center' rowspan = '6'>

<IMG SRC = '<% = lnkImage %> ' width = '150' height = '210' ALT = '<% = longNameArtikel %> '>

</font>

</td>

<td colspan = '3'>

<%

idConn2.Open 'DSN = shopsysdata'

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

RANDOMIZE(Time())

varC = Int(32 * Rnd +1)

DO WHILE NOT RS2(TRIM('idFarbe')) = varC AND NOT RS2.EOF

RS2.MoveNext

LOOP

color = RS2('Farbe')

RS2.Close

idConn2.Close

%>

<font align = 'left' color = '<% = color %> ' size = '+1' family = 'Comic Sans MS'>

<table> <tr> <td background = '../images/stylesbg.jpg'> <% = RS('nameArtikel') %> </td> </tr> </table>

</font>

</td>

<td valign = center> <font color = 'white'>

<input size = '3' name = 'Stueckzahl' value = '1'> St&uuml;ck

</font>

</td>

<td> <font color = 'white'>

Preis/Stk.: &nbsp; <% = RS('euroPriceArtikel') %> &nbsp; Euro

</font>

</td>

</tr>

<tr>

<td valign = top> <font color = 'white'>

Autor(en):

</font>

</td>

<td valign = top colspan = '2'> <font color = 'white'>

<% = RS('Autor') %>

</font>

</td>

<td>

</td>

<td> <font color = 'white'>

<% atsPreis = RS('euroPriceArtikel')*13.7603 %>

Preis/Stk.: &nbsp; <% = Round(atsPreis, 2) %> &nbsp; ATS

</font>

</td>

</tr>

<tr>

<td> <font color = 'white'>

ISBN:

</font>

</td>

<td colspan = '2'> <font color = 'white'>

<% = RS('ISBN') %>

</font>

</td>

<td colspan = '2'> <font color = 'white'>

<input type = 'submit' size = '3' value = 'auf die Shoppingliste'>

</font>

</td>

</tr>

<tr>

<td colspan = '3'> <font color = 'white'>

<% = RS('Cover') %>

</font>

</td>

<td width = '45%' colspan = '2' rowspan = '3'> <font color = 'white'>

Wenn Sie hier auf den Knopf 'auf die Shoppingliste'

dr&uuml;cken, wird dieser Artikel in der gew&uuml;schten

St&uuml;ckzahl in den Warenkorb gelegt :-)

</font>

</td>

</tr>

<tr>

<td> <font color = 'white'>

Erschienen:

</font>

</td>

<td colspan = '2'> <font color = 'white'>

<% = RS('Erscheinung') %>

</font>

</td>

</tr>

<tr>

<td colspan = '3'> <font color = 'white'>

<% = RS('Umfang') %>

</font>

</td>

</tr>

<tr>

<td colspan = '6'> <font color = 'white'>

<br>

<u>

Eine Kurzbeschreibung des Artikels:

</u>

<br>

<i>

<% = RS('descrArtikel') %>

</i>

</font>

</td>

</tr>

<tr>

<td colspan = '6'> <font color = 'white'>

<a href = '<% = RS('mehrInfo') %> ' > <i> Weitere Informationen</i> </a>

finden Sie bei

<a href = 'http://www.amazon.at'> <i> Amazon</i> </a>

</font>

</td>

</tr>

</table>

</center>

</form>


Was wir hier sehen ist nichts weiter als eine Tabelle - die Struktur sieht nicht nur kompliziert aus, sie ist es auch und man programmiert das wohl einfacher mit einem Tool (zB Frontpage) als von Hand. Die Tabelle ist eigentlich nur für das Aussehen der Site zuständig, die Funktion wird im Formular verpackt (form-tag). Dort wird die Artikel# und die gewünschte Stückzahl weitergegeben.


</body>

</html>


<%

RS.Close

idConn.Close

%>


warenkorb.asp

<!-- #include file = '../universalskripts/idConnection.inc' -->

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>

<% const conimgNotFound = '../images/imgNotFound.gif' %>

<% command = Request.QueryString('command') %>

<% Artikel = Request.QueryString('Artikel') %>

<% nameSparte = Request.QueryString('nameSparte') %>

<% Stueckzahl = Request.Form('Stueckzahl') %>

<% IF IsNull(idUser2) or idUser2 = '' THEN idUser2 = '0' END IF %>

<!-- #include file = '../styles.inc' -->


Es werden auch hier verschiedene Daten aus dem QueryString bzw. aus einem Formular geholt. Um aus einem Formular Daten holen zu können muß die 'Vorgängerseite' mit einem Formular und der Method Post genau diese Daten übergeben haben.


<html>

<head>

<title>

Warenkorb

</title>

</head>

<body> <hr width = '100%'>

<%

IF command = 'insert' THEN

RS.Open 'SELECT * FROM Artikel WHERE idArtikel = ' & Artikel, idConn

Einzelpreis = RS('euroPriceArtikel')

Bestellsumme2 = Replace(RS('euroPriceArtikel')*Stueckzahl, ', ', '.')

Bestellsumme2 = Replace(Bestellsumme2, '.', ', ')


Replace ersetzt zB ein bestimmtes Zeichen wie einen Beistrich durch ein anderes hier ist das zur Berechnung des Gesamtpreises notwendig, da der Computer Englisch spricht und rechnet und im englischsprachigen Raum steht ein Punkt für ein Komma - würd ich nichts umwandeln käme am Ende ein etwas seltsamer Preis raus.


Autor2 = RS('Autor')

nameArtikel2 = RS('nameArtikel')

RS.Close

idConn.Execute 'INSERT INTO Bestellung (idSession, idArtikel, idUser, nameArtikel, Autor, euroPriceArtikel, Bestelldatum, Bestellmenge, Bestellsumme) Values ('&'''&idSession2&'''&', '&'''&Artikel&'''&', '&'''&idUser2&'''&', '&'''&nameArtikel2&'''&', '&'''&Autor2&'''&', '&'''&Einzelpreis&'''&', '&'''&DATE()&'''&', '&'''&Stueckzahl&'''&', '&'''&Bestellsumme2&'''&')'


Die Bestellung wird in eine Tabelle geschrieben, damit der Warenkorb später auch noch alle Waren enthält - von selbst merkt sich der Computer nichts.


RS.Open 'Select * From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn

ZaehlerA = 0

ZaehlerC = 0

%>

<% ZaehlerD = 0 %>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD = '0'  THEN

color1 = 'black'

color2 = 'white'

ELSEIF ZaehlerD = '1'  THEN

color1 = 'white'

color2 = 'black'

END IF %>


Diese Color-Spielerei bewirkt, daß bei Bestellung von mehreren Daten die einzelnen Artikel im Warenkorb gut unterschieden werden können - es wird immer eine Zeile schwarz angezeigt, die nächste weiß, die nächste wieder schwarz


<table bgcolor = '<% = color1 %> ' width = '100%'>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('nameArtikel') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Autor') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Neue St&uuml;ckzahl:</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = change&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>


Hier kann man die Bestellmenge eines Artikels ändern - bei Büchern mag dies unsinnig erscheinen weil man wohl kaum 2 mal dasselbe Buch bestellt, bei anderen Artikeln würde dies aber durchaus Sinn machen. (zB: 100 CD-Rohlinge)


<input name = 'Stueckzahl' size = '3' value = '1'>

<input type = 'submit' size = '3' value = '&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Bestellsumme') %> Euro gesamt</font> </td>

<td width = '20%'> <a href = 'details.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> ' target = '_blank'> <font color = '<% = color2 %> '> Mehr Info</font> </a> </td>

<td width = '20%'> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '2' value = 'Artikel streichen'>


Eine Funktion zum Streichen eines bestimmten Artikels.


</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD = '0' THEN

ZaehlerD = '1'

ELSEIF ZaehlerD = '1' THEN

ZaehlerD = '0'

END IF %>


Um die oben erwähnte Farbfunktion durchführen zu können ist natürlich ein Zähler in der Schleife nötig, der wiederum von Bedingungen abhängt.


<% ZaehlerB = RS('Bestellsumme') %>

<% ZaehlerA = ZaehlerA+ZaehlerB %>


Hier wird eine Variable immer mit der Bestellsumme belegt, die andere wird verwendet um sich die Summe zu merken und bei Anzeige von mehreren Artikeln und damit bei mehreren Schleifendurchläufen die Summe immer zu aktualisieren.


<% ZaehlerC = ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width = '100%' background = '../images/stylesbg.jpg'>

<tr>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerC %> Artikel</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerA %> Euro gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = Round(ZaehlerA*13.7603, 2) %> ATS gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'navy'> <strong>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = alle&idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '3' value = 'Liste l&ouml;schen'>

</form>


Auch eine Funktion zum Löschen des Warenkorbs darf nicht fehlen.


</strong> </font>

</td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'bestellen.asp?idSession2 = <% = idSession2%> &idUser2 = <% = idUser2%> ' METHOD = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen'>

<input type = 'submit' size = '3' value = 'Bestellen!'>

</form>


Diese Funktion leitet schließlich zur nächsten Datei auf der man dann seine persönlichen Daten bekanntgibt.


</strong> </font>

</td>

</tr>

</table>

<% RS.Close %>


Hier wiederholt sich derselbe Code mehrmals - nur um zu unterscheiden ob ein Artikel hinzugefügt, gelöscht, upgedated oder bloß der Warenkorb angeschaut werden soll. Das könnte man sicherlich ganz einfach mit einer Variablen lösen, in die man alle diese Befehle packt - es sei jedem überlassen es so bzw. besser zu machen.


<%

ELSEIF command = 'change' THEN

IF Stueckzahl = '0' THEN RS.Open 'DELETE from Bestellung WHERE idArtikel = ' & Artikel, idConn ELSE RS.Open 'UPDATE Bestellung SET Bestellmenge = ' & Stueckzahl & ' WHERE idArtikel = ' & Artikel, idConn END IF

RS.Open 'Select euroPriceArtikel From Artikel Where idArtikel = ' & Artikel, idConn

Bestellsumme2 = Replace(RS('euroPriceArtikel')*Stueckzahl, ', ', '.')

Bestellsumme2 = Replace(Bestellsumme2, '.', ', ')

RS.Close

RS.Open 'UPDATE Bestellung SET Bestellsumme = ' & ''' & Bestellsumme2 & ''' & ' WHERE idArtikel = ' & Artikel, idConn

RS.Open 'Select * From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn

ZaehlerA = 0

ZaehlerC = 0

ZaehlerD = '0'

%> <%

DO While Not RS.EOF

%>

<%

IF ZaehlerD = '0'  THEN

color1 = 'black'

color2 = 'white'

ELSEIF ZaehlerD = '1'  THEN

color1 = 'white'

color2 = 'black'

END IF %>

<table bgcolor = '<% = color1 %> ' width = '100%'>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('nameArtikel') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Autor') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Neue St&uuml;ckzahl:</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = change&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input name = 'Stueckzahl' size = '3' value = '1'>

<input type = 'submit' size = '3' value = '&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Bestellsumme') %> Euro gesamt</font> </td>

<td width = '20%'> <a href = 'details.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> ' target = '_blank'> <font color = '<% = color2 %> '> Mehr Info</font> </a> </td>

<td width = '20%'> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '2' value = 'Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD = '0' THEN

ZaehlerD = '1'

ELSEIF ZaehlerD = '1' THEN

ZaehlerD = '0'

END IF %>

<% ZaehlerB = RS('Bestellsumme') %>

<% ZaehlerA = ZaehlerA+ZaehlerB %>

<% ZaehlerC = ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width = '100%' bgcolor = '../images/stylesbg.jpg'>

<tr>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerC %> Artikel</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerA %> Euro gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = Round(ZaehlerA*13.7603, 2) %> ATS gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = alle&idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '3' value = 'Liste l&ouml;schen'>

</form>

</strong> </font>

</td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'bestellen.asp?idSession2 = <% = idSession2%> &idUser2 = <% = idUser2%> ' METHOD = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen'>

<input type = 'submit' size = '3' value = 'Bestellen!'>

</form>

</strong> </font>

</td>

</tr>

</table>

<% RS.Close %>

<%

ELSEIF command = 'delete' THEN %>

<% IF Artikel = 'alle' THEN RS.Open 'DELETE From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn ELSE RS.Open 'DELETE From Bestellung Where idArtikel = ' & Artikel, idConn END IF %>

<% RS.Open 'Select * From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn

ZaehlerA = 0

ZaehlerC = 0

ZaehlerD = '0'

%>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD = '0'  THEN

color1 = 'black'

color2 = 'white'

ELSEIF ZaehlerD = '1'  THEN

color1 = 'white'

color2 = 'black'

END IF %>

<table bgcolor = '<% = color1 %> ' width = '100%'>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('nameArtikel') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Autor') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Neue St&uuml;ckzahl:</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = change&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input name = 'Stueckzahl' size = '3' value = '1'>

<input type = 'submit' size = '3' value = '&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Bestellsumme') %> Euro gesamt</font> </td>

<td width = '20%'> <a href = 'details.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> ' target = '_blank'> <font color = '<% = color2 %> '> Mehr Info</font> </a> </td>

<td width = '20%'> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '2' value = 'Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD = '0' THEN

ZaehlerD = '1'

ELSEIF ZaehlerD = '1' THEN

ZaehlerD = '0'

END IF %>

<% ZaehlerB = RS('Bestellsumme') %>

<% ZaehlerA = ZaehlerA+ZaehlerB %>

<% ZaehlerC = ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width = '100%' background = '../images/stylesbg.jpg'>

<tr>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerC %> Artikel</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerA %> Euro gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = Round(ZaehlerA*13.7603, 2) %> ATS gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = alle&idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '3' value = 'Liste l&ouml;schen'>

</form>

</strong> </font>

</td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'bestellen.asp?idSession2 = <% = idSession2%> &idUser2 = <% = idUser2%> ' METHOD = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen'>

<input type = 'submit' size = '3' value = 'Bestellen!'>

</form>

</strong> </font>

</td>

</tr>

</table>

<% RS.Close %>

<% ELSEIF command = 'ansehen' THEN %>

<% RS.Open 'Select * From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn

ZaehlerA = 0

ZaehlerC = 0

ZaehlerD = '0'

%>

<table width = '100%'>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD = '0'  THEN

color1 = 'black'

color2 = 'white'

ELSEIF ZaehlerD = '1'  THEN

color1 = 'white'

color2 = 'black'

END IF %>

<table bgcolor = '<% = color1 %> ' width = '100%'>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('nameArtikel') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Autor') %> </font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> Neue St&uuml;ckzahl:</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = change&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input name = 'Stueckzahl' size = '3' value = '1'>

<input type = 'submit' size = '3' value = '&Auml;ndern'>

</form>

</font>

</td>

</tr>

<tr>

<td width = '20%'> <font color = '<% = color2 %> '> Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font> </td>

<td width = '20%'> <font color = '<% = color2 %> '> <% = RS('Bestellsumme') %> Euro gesamt</font> </td>

<td width = '20%'> <a href = 'details.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> ' target = '_blank'> <font color = '<% = color2 %> '> Mehr Info</font> </a> </td>

<td width = '20%'> </td>

<td width = '20%'> <font color = '<% = color2 %> '>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '2' value = 'Artikel streichen'>

</form>

</font>

</td>

</tr>

</font>

</table>

<% IF ZaehlerD = '0' THEN

ZaehlerD = '1'

ELSEIF ZaehlerD = '1' THEN

ZaehlerD = '0'

END IF %>

<% ZaehlerB = RS('Bestellsumme') %>

<% ZaehlerA = ZaehlerA+ZaehlerB %>

<% ZaehlerC = ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width = '100%' background = '../images/stylesbg.jpg'>

<tr>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerC %> Artikel</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = ZaehlerA %> Euro gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong> <% = Round(ZaehlerA*13.7603, 2) %> ATS gesamt</strong> </font> </td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = alle&idUser2 = <% = idUser2%> &command = delete&nameSparte = <% = nameSparte%> ' METHOD = 'Post'>

<input type = 'submit' size = '3' value = 'Liste l&ouml;schen'>

</form>

</strong> </font>

</td>

<td width = '20%'> <font color = 'white'> <strong>

<form action = 'bestellen.asp?idSession2 = <% = idSession2%> &idUser2 = <% = idUser2%> ' METHOD = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen'>

<input type = 'submit' size = '3' value = 'Bestellen!'>

</form>

</strong> </font>

</td>

</tr>

</table>

<% RS.Close %>

<% END IF %>

</body>

</html>


<%

idConn.Close

%>


bestellen.asp

<!-- #include file = '../universalskripts/idConnection.inc' -->

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>

<!-- #include file = '../styles.inc' -->

<% command = Request.Form('command') %>

<% IF command = '' OR IsNull(command) THEN command = Request.QueryString('command') END IF %>

<% Anmeldung = Request.Form('anmeldung') %>

<% IF Anmeldung = '' OR IsNull('Anmeldung') THEN Anmeldung = Request.QueryString('Anmeldung') %>

<% EName = Request.Form('EName') %>

<% IF EName = '' OR IsNull(EName) THEN EName = Request.QueryString('EName') END IF %>

<% Passwort = Request.Form('Passwort') %>


Hier werden bereits ziemlich viele Daten abgefragt, sogar auf 2 verschiedene Arten - da die Seite eigentlich verschiedene Seiten in sich vereint und daher immer wieder neu unter anderen Bedingungen geladen werden muß, kommt es vor, daß Daten auf verschiedene Arten übergeben werden - eben entweder per QueryString oder per Formular.


<html>

<head>

<title>

Anmelden/Bestellen

</title>


Hier dieselbe Funktion (Reload der Seite) mit verschiedenen Parametern. Sie werden von den unterschiedlichsten Stellen der Seite her aufgerufen und sind je nach Bedarf bezüglich der zu übergebenden Parameter abgestimmt. Der Name nonameorpass rührt daher, daß wir am Anfang auf das Problem stießen, daß falls der Anwender keinen Namen oder Paßwort angibt die Seite erneut geladen wird und der Anwender so quasi zur Eingabe gezwungen wird, da er sonst nie zu einer anderen Seite kommt. Daß wir diese Funktion später so intensiv anwenden würden ahnten wir hier noch nicht.


<script language = 'javascript'>

function nonameorpass()


function nonameorpass2()


function nonameorpass3()


function nonameorpass4()


function nonameorpass5()


function nonameorpass6()


</script>

</head>


<body> <font color = 'white'>

<%


Dies ist eine Select-Case-Struktur - eigentlich nichts anderes als eine bessere Struktur für einen vielverzweigten IF-Befehl. Syntax: Select Case Variable | Case Variableninhalt | Case Variableninhalt2 | Case .. | End Select


SELECT CASE command

CASE 'bestellen' %>


Der CASE bestellen ist true wenn man direkt von der warenkorb.asp kommt, dann wird genau jener Teil angezeigt, der in der Struktur an dieser Stelle steht.


<br> <br> <br> <br> <br>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' METHOD = 'POST'>


Man beachte: Hier wird die Reload-Funktion nonameorpass noch nicht benötigt, da ein Neuladen vom User angefordert werden muß - die Funktion wird notwendig wenn selbständig ein neuer Teil der Seite aufgerufen werden soll.


<input type = 'hidden' name = 'command' value = 'bestellen2'>

<table align = 'left' border bgcolor = 'forestgreen' border = '5' bordercolor = 'yellow' borderlightcolor = '#FFFF11' borderdarkcolor = 'gray' cellpadding = '5' width = '50%'>

<tr> <td> Name:</td> <td> <input type = 'text' name = 'EName' value = ''> </td> </tr>

<tr> <td> Passwort:</td> <td> <input type = 'password' name = 'passwort' value = ''> </td> </tr>

<tr> <td> <input type = 'radio' name = 'anmeldung' value = 'neu' checked> Neu anmelden</td> <td valign = 'middle' align = 'center' rowspan = '3'> <input type = 'submit' value = 'Anmelden'> </td> </tr>

<tr> <td> <input type = 'radio' name = 'anmeldung' value = 'bestehend'> Bestehendes Konto</td> </tr>

<tr> <td> <input type = 'radio' name = 'anmeldung' value = 'aendern'> Konto &auml;ndern</td> </tr>

</table>

</form>

<table width = '50%' border = '0'> <tr> <td width = '10%'> </td> <td width = '80%'>


Diese Textarea verursacht mit Netscape grafische Probleme, sie wird nicht als solche erkannt. Überhaupt ist diese Seite vom grafischen Aufbau her besser für den IE geeignet.


<textarea cols = 30 rows = 11>

s +++++ HILFE +++++ ?


Bevor Sie wirklich endg&uuml;ltig bestellen k&ouml;nnen m&uuml;ssen Sie sich noch authentifizieren.


Wenn Sie ein neuer Kunde sind geben Sie bitte einfach den gew&uuml;nschten Usernamen und das gew&uuml;nschte Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Neu anmelden'.


Wenn Sie bereits ein Konto bei uns besitzen, so loggen Sie sich einfach mit dem &uuml;blichen Namen und Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Bestehendes Konto'.


Wenn Sie bereits ein Konto haben, aber etwas um&auml;ndern m&ouml;chten, so geben Sie bitte Ihren &uuml;blichen Namen und Pa&szlig;wort ein und w&auml;hlen Sie die Option 'Konto &auml;ndern'.

</textarea>

</td> <td width = '10%'> </td> </tr> </table>

<br clear = all>



<% CASE 'bestellen2' %>

<% IF EName = '' or IsNull(EName) or Passwort = '' or IsNull(Passwort)  THEN %>

<script language = 'JavaScript'>

alert('Sie müssen sowohl einen Namen als auch ein Paßwort eingeben')

nonameorpass4()

</script>

<% END IF %>


Hier sehen wir erstmals die Notwendigkeit der Funktion - wenn der User Namen oder Passwort nicht eingibt soll die Seite automatisch neu geladen werden, und zwar der erste Teil der Seite, damit der User die Daten nochmals eingeben kann.


<%


Hier finden wir einen weiteren interessanten Punkt: Eine Select-Case-Struktur innerhalb einer Select-Case-Struktur - nicht verwirren lassen!

Diese Struktur zeigt entweder die Daten eines bereits erstellten Kontos, oder nur ein leeres Formular an - das hängt davon ab welche Option der User im ersten Teil der Seite gewählt hat. Natürlich gibt es auch hier wieder Bedingungen - etwa wenn der User einen Namen auswählt der bereits vergeben ist, oder ein falsches Passwort eingibt.

Geht alles gut so kann der User entweder seine Daten eingeben, überprüfen, oder ändern.


SELECT CASE Anmeldung

CASE 'neu'

%>

<%

RS.Open 'SELECT * From Kunden WHERE nameKunde = ' & ''' & EName & ''', idConn

IF NOT RS.EOF THEN

RS.Close %>

<script language = 'JavaScript'>

alert('Bitte wählen Sie einen anderen Namen - Ihr Name ist bereits vergeben')

nonameorpass4()

</script>

<% END IF

RS.Close

RS.Open 'INSERT INTO Kunden (nameKunde, passKunde) Values (' & ''' & EName & ''' & ', ' & ''' & Passwort & ''' & ')', idConn

%>

<br> <br>

<font size = '+2'>

Vielen Dank f&uuml;r Ihre Anmeldung <b> <% = EName %> </b> :-)) <br>

Wir bitten Sie noch folgende Details anzugeben bevor die Bestellung durchgef&uuml;hrt werden kann.

</font>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' METHOD = 'POST'>

<input type = 'hidden' name = 'command' value = 'bestellen22'>

<input type = 'hidden' name = 'EName' value = '<% = EName%> '>

<table width = '70%'>

<tr> <td> <font size = '+1' color = 'white'> Ihre Firma:</font> </td> <td> <input size = '20' type = 'text' name = 'Firma' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Stra&szlig;e</font> </td> <td> <input size = '20' type = 'text' name = 'Street' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> PLZ/Ort</font> </td> <td> <input size = '5' type = 'text' name = 'PLZ' value = ''> &nbsp;&nbsp;<input size = '12' type = 'text' name = 'Ort' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Staat</font> </td> <td> <input size = '20' type = 'text' name = 'Staat' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Telefon:</font> </td> <td> <input size = '20' type = 'text' name = 'Telefon' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Fax:</font> </td> <td> <input size = '20' type = 'text' name = 'Fax' value = ''> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> E-mail Addy:</font> </td> <td> <input size = '20' type = 'text' name = 'Addy' value = ''> </td> </tr>

</table>

<br>

<table>

<tr> <td colspan = '2' align = 'left'> <input type = 'submit' size = '30' value = 'Info absenden'> </td> </tr>

</table>

</form>


<%

CASE 'bestehend'

RS.Open 'SELECT * From Kunden WHERE nameKunde = ' & ''' & EName & ''', idConn

IF RS.EOF THEN %>

<script language = 'JavaScript'>

alert('Sie haben sich entweder vertippt, oder zuvor noch nicht angemeldet - bitte überprüfen Sie Ihre Eingaben')

nonameorpass4()

</script>

<% END IF %>

<%

RS.Close

RS.Open 'Select * From Kunden WHERE nameKunde = ' & ''' & EName & ''', idConn %>

<% Firma = RS('compKunde')

Street = RS('streetKunde')

PLZ = RS('zipKunde')

Ort = RS('cityKunde')

Staat = RS('countryKunde')

Telefon = RS('phoneKunde')

Fax = RS('faxKunde')

Addy = RS('emailKunde')

%>

<br> <br>

<font size = '+2'>

&Uuml;berpr&uuml;fen Sie bitte Ihre Einstellungen - falls alles stimmt dr&uuml;cken Sie bitte weiter.

</font>

<br> <br>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' METHOD = 'POST'>

<input type = 'hidden' name = 'command' value = 'bestellen23'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<table width = '70%'>

<tr> <td> <font size = '+1' color = 'white'> Ihre Firma:</font> </td> <td> <input size = '20' type = 'text' name = 'Firma' value = '<% = Firma %> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Stra&szlig;e</font> </td> <td> <input size = '20' type = 'text' name = 'Street' value = '<% = Street%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> PLZ/Ort</font> </td> <td> <input size = '5' type = 'text' name = 'PLZ' value = '<% = PLZ%> '> &nbsp;&nbsp;<input size = '12' type = 'text' name = 'Ort' value = '<% = Ort%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Staat</font> </td> <td> <input size = '20' type = 'text' name = 'Staat' value = '<% = Staat%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Telefon:</font> </td> <td> <input size = '20' type = 'text' name = 'Telefon' value = '<% = Telefon%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Fax:</font> </td> <td> <input size = '20' type = 'text' name = 'Fax' value = '<% = Fax%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> E-mail Addy:</font> </td> <td> <input size = '20' type = 'text' name = 'Addy' value = '<% = Addy%> '> </td> </tr>

</table>

<br>

<table width = '70%'>

<tr> <td width = '1%'> <input type = 'submit' size = '30' value = '&Auml;ndern!'> </td>

</form>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' Method = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen4'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<td> <input type = 'submit' size = '30' value = 'Weiter'> </td> </tr>

</table>

</form>


<%

CASE 'aendern'

RS.Open 'SELECT * From Kunden WHERE nameKunde = ' & ''' & EName & ''' & 'AND passKunde = ' & ''' & Passwort & ''', idConn

IF RS.EOF THEN %>

<% RS.Close %>

<script language = 'JavaScript'>

alert('Sie haben sich entweder vertippt, oder zuvor noch nicht angemeldet - bitte überprüfen Sie Ihre Eingaben')

nonameorpass4()

</script>

<% END IF %>

<% Firma = RS('compKunde')

Street = RS('streetKunde')

PLZ = RS('zipKunde')

Ort = RS('cityKunde')

Staat = RS('countryKunde')

Telefon = RS('phoneKunde')

Fax = RS('faxKunde')

Addy = RS('emailKunde')

%>

<br> <br>

<font size = '+2'> Hier k&ouml;nnen Sie Ihre pers&ouml;nlichen Daten beliebig um&auml;ndern. Falls Sie es sich doch noch anders &uuml;berlegt haben dr&uuml;cken Sie einfach weiter. </font>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' METHOD = 'POST'>

<input type = 'hidden' name = 'command' value = 'bestellen23'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<table width = '70%'>

<tr> <td> <font size = '+1' color = 'white'> Ihre Firma:</font> </td> <td> <input size = '20' type = 'text' name = 'Firma' value = '<% = Firma %> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Stra&szlig;e</font> </td> <td> <input size = '20' type = 'text' name = 'Street' value = '<% = Street%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> PLZ/Ort</font> </td> <td> <input size = '5' type = 'text' name = 'PLZ' value = '<% = PLZ%> '> &nbsp;&nbsp;<input size = '12' type = 'text' name = 'Ort' value = '<% = Ort%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Staat</font> </td> <td> <input size = '20' type = 'text' name = 'Staat' value = '<% = Staat%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Telefon:</font> </td> <td> <input size = '20' type = 'text' name = 'Telefon' value = '<% = Telefon%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Fax:</font> </td> <td> <input size = '20' type = 'text' name = 'Fax' value = '<% = Fax%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> E-mail Addy:</font> </td> <td> <input size = '20' type = 'text' name = 'Addy' value = '<% = Addy%> '> </td> </tr>

</table>

<br>

<table width = '70%'>

<tr> <td width = '1%'> <input type = 'submit' size = '30' value = '&Auml;ndern!'> </td>

</form>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' Method = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen4'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<td> <input type = 'submit' size = '30' value = 'Weiter'> </td> </tr>

</table>

</form>

<% RS.Close

END SELECT %>


CASE bestellen22 bzw 23 unterscheiden sich nur dadurch, daß im Falle einer Fehleingabe der User zu verschiedenen Seiten zurückgeleitet wird.

Andert der User seine Daten werden sie aktualisiert und zur Überprüfung erneut angezeigt - dieser Kreislauf währt so lange bis der User mit seinen Daten zufrieden ist und auf 'weiter' klickt.

Hier findet sich auch leider das letzte Problem dieser Applikation - beim MS IE werden die Daten bei einer Anderung zwar in die Tabelle eingetragen, aber dann falsch angezeigt. Dies geschieht obwohl die Daten richtig in der Tabelle stehen und der Browser die Daten eigentlich aus der Tabelle holen sollte - das tut er leider nicht, der Browser merkt sich die alten Daten, bemerkt nicht daß sich etwas verändert hat und zeigt die alten Daten an um Zeit zu sparen - klickt man auf 'Aktualisieren' zeigt der Browser die richtigen Daten an.

Der Netscape Navigator (getestet mit Version 4.7) macht hier keine Probleme, es werden alle Daten richtig zur Anzeige gebracht.


<%

CASE 'bestellen22' %>

<%

Firma = Request.Form('Firma')

Street = Request.Form('Street')

PLZ = Request.Form('PLZ')

Ort = Request.Form('Ort')

Staat = Request.Form('Staat')

Telefon = Request.Form('Telefon')

Fax = Request.Form('Fax')

Addy = Request.Form('Addy')

IF Firma = '' OR Street = '' OR PLZ = '' OR Ort = '' OR Staat = '' OR Telefon = '' OR Fax = '' OR Addy = '' OR IsNull(Firma) OR IsNull(Street) OR IsNull(PLZ) OR IsNull(Ort) OR IsNull(Staat) OR IsNull(Telefon) OR IsNull(Fax) OR IsNull(Addy)  THEN %>

<script language = 'JavaScript'>

alert('Sie müssen wohl oder übel in jedes Feld einen Wert eintragen')

nonameorpass5()

</script>

<% END IF %>

<% RS.Open 'Update Kunden SET compKunde = ' & ''' & Firma & ''' & ' , streetKunde = ' & ''' & Street & ''' & ' , zipKunde = ' & ''' & PLZ & ''' & ' , cityKunde = ' & ''' & Ort & ''' & ' , countryKunde = ' & ''' & Staat & ''' & ' , phoneKunde = ' & ''' & Telefon & ''' & ' , faxKunde = ' & ''' & Fax & ''' & ' , emailKunde = ' & ''' & Addy & ''' & 'WHERE nameKunde = ' & ''' & EName & ''', idConn

%>

<script language = 'javascript'>

nonameorpass()

</script>


<% CASE 'bestellen23' %>

<%

Firma = Request.Form('Firma')

Street = Request.Form('Street')

PLZ = Request.Form('PLZ')

Ort = Request.Form('Ort')

Staat = Request.Form('Staat')

Telefon = Request.Form('Telefon')

Fax = Request.Form('Fax')

Addy = Request.Form('Addy')

IF Firma = '' OR Street = '' OR PLZ = '' OR Ort = '' OR Staat = '' OR Telefon = '' OR Fax = '' OR Addy = '' OR IsNull(Firma) OR IsNull(Street) OR IsNull(PLZ) OR IsNull(Ort) OR IsNull(Staat) OR IsNull(Telefon) OR IsNull(Fax) OR IsNull(Addy) THEN %>

<script language = 'JavaScript'>

alert('Sie müssen wohl oder übel in jedes Feld einen Wert eintragen')

nonameorpass6()

</script>

<% END IF %>

<% RS.Open 'Update Kunden SET compKunde = ' & ''' & Firma & ''' & ' , streetKunde = ' & ''' & Street & ''' & ' , zipKunde = ' & ''' & PLZ & ''' & ' , cityKunde = ' & ''' & Ort & ''' & ' , countryKunde = ' & ''' & Staat & ''' & ' , phoneKunde = ' & ''' & Telefon & ''' & ' , faxKunde = ' & ''' & Fax & ''' & ' , emailKunde = ' & ''' & Addy & ''' &  'WHERE nameKunde = ' & ''' & EName & ''', idConn

%>

<script language = 'javascript'>

nonameorpass()

</script>


<%

CASE 'bestellen3'

%>

<br> <br>

<font size = '+2'>

&Uuml;berpr&uuml;fen Sie bitte nochmals Ihre Einstellungen - falls alles stimmt dr&uuml;cken Sie bitte weiter.

</font>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' METHOD = 'POST'>

<input type = 'hidden' name = 'command' value = 'bestellen23'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<%

RS.Open 'Select * From Kunden WHERE nameKunde = ' & ''' & EName & ''', idConn %>

<%

Firma2 = RS('compKunde')

Street2 = RS('streetKunde')

PLZ2 = RS('zipKunde')

Ort2 = RS('cityKunde')

Staat2 = RS('countryKunde')

Telefon2 = RS('phoneKunde')

Fax2 = RS('faxKunde')

Addy2 = RS('emailKunde')

%>

<table width = '70%'>

<tr> <td> <font size = '+1' color = 'white'> Ihre Firma:</font> </td> <td> <input size = '20' type = 'text' name = 'Firma' value = '<% = Firma2 %> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Stra&szlig;e</font> </td> <td> <input size = '20' type = 'text' name = 'Street' value = '<% = Street2%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> PLZ/Ort</font> </td> <td> <input size = '5' type = 'text' name = 'PLZ' value = '<% = PLZ2%> '> &nbsp;&nbsp;<input size = '12' type = 'text' name = 'Ort' value = '<% = Ort2%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Staat</font> </td> <td> <input size = '20' type = 'text' name = 'Staat' value = '<% = Staat2%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Telefon:</font> </td> <td> <input size = '20' type = 'text' name = 'Telefon' value = '<% = Telefon2%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> Fax:</font> </td> <td> <input size = '20' type = 'text' name = 'Fax' value = '<% = Fax2%> '> </td> </tr>

<tr> <td> <font size = '+1' color = 'white'> E-mail Addy:</font> </td> <td> <input size = '20' type = 'text' name = 'Addy' value = '<% = Addy2%> '> </td> </tr>

</table>

<br>

<table width = '70%'>

<tr> <td width = '1%'> <input type = 'submit' size = '30' value = '&Auml;ndern!'> </td>

</form>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' Method = 'Post'>

<input type = 'hidden' name = 'command' value = 'bestellen4'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<td> <input type = 'submit' size = '30' value = 'Weiter'> </td> </tr>

</table>

</form>


Erst hier endet die Schleife zur Anderung und Überprüfung der persönlichen Daten des Users. Jetzt kann eine von 2 Zahlungsmethoden ausgewählt werden. Hier haben wir uns an www.amazon.de angelehnt, die genau diese Zahlungsmethoden anbieten. Alleine unsere eigene Kreditkartenfirma stellen wir auch zur Auswahl (James Cool CC).

Hier werden die nötigen Daten wieder per Formular weitergegeben.


<%

CASE 'bestellen4'

%>

<br> <br>

<font size = '+2'>

Bitte w&auml;hlen Sie Ihre bevorzugte Zahlungsmethode aus und geben Sie die notwendigen Informationene an. *g* Ich m&ouml;chte an dieser Stelle den Ausschlu&szlig; meiner pers&ouml;nlichen Haftung f&uuml;r jedwegen aus diesem Warenkorb entstehenden Schaden bekanntgeben :-)) Bitte geben Sie nicht Ihre richtige Kreditkartennummer ein :-)) Das ist nur eine Probe-Applikation ohne jedgliche Sicherheitsma&szlig;nahmen.

</font>

<br> <br> <br>

<form action = 'bestellen.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> ' Method = 'Post'>


Das Attribut hidden heißt, daß dieses Feld nicht angezeigt werden soll - der Sinn? Daten können so übermittelt werden.


<input type = 'hidden' name = 'command' value = 'bestellen5'>

<input type = 'hidden' name = 'EName' value = '<% = EName %> '>

<input type = 'hidden' name = 'passwort' value = '<% = Passwort %> '>

<table width = %>

<tr>

<td colspan = 2 bgcolor = 'black'> <font color = 'white'> Zahlungsart</font> <br> </td>

<td bgcolor = 'black'> <font color = 'white'> Konto-Nr.</font> <br> &nbsp;</td>

<td bgcolor = 'black'> &nbsp;<font color = 'white'> Bankleitzahl</font> <br> &nbsp;</td>

<td bgcolor = 'black'> &nbsp;<font color = 'white'> Name des Kontoinhabers</font> <br> &nbsp;</td>

</tr>

<td> <input type = 'radio' value = 'Bankeinzug' name = 'Zahlungsart' > </td>

<td> <font color = 'white'> Bankeinzug</font> </td>

<td> <input type = text size = 20 maxlength = 10 name = 'Kontonr'> </td>

<td> <input type = text size = 11 maxlength = 8 name = 'BLZ'> </td>

<td> <input type = text size = 35 name = 'Inhaber'> </td>

<tr>

<td colspan = 2> <br> </td>

<td bgcolor = 'black'> <font color = 'white'> Kreditkartennr.</font> <br> </td>

<td bgcolor = 'black'> &nbsp;<font color = 'white'> G&uuml;ltig bis:</font> <br> &nbsp;</td>

<td bgcolor = 'black'> &nbsp;<font color = 'white'> Name des Kreditkarteninhabers</font> <br> &nbsp;</td>

</tr>

<td> <input type = radio value = 'Kreditkarte' name = 'Zahlungsart'> </td>

<td>

<select name = 'Kartenfirma'>

<option value = 'James'> James Cool CC

<option value = 'Visa'> Visa

<option value = 'AmericanExpress'> American Express

<option value = 'MasterCard'> MasterCard

</select>

</td>

<td> <input type = text size = 20 name = 'Kartennr'> </td>

<td>

<nobr>

<select name = 'Monatfaellig'>

<option value = '01'> 01<option value = '02'> 02<option value = '03'> 03<option value = '04'> 04<option value = '05'> 05<option value = '06'> 06<option value = '07'> 07<option value = '08'> 08<option value = '09'> 09<option value = '10'> 10<option value = '11'> 11<option value = '12'> 12

</select>

<select name = 'Jahrfaellig'>

<option value = '1999'> 1999<option value = '2000'> 2000<option value = '2001'> 2001<option value = '2002'> 2002<option value = '2003'> 2003<option value = '2004'> 2004<option value = '2005'> 2005<option value = '2006'> 2006<option value = '2007'> 2007<option value = '2008'> 2008<option value = '2009'> 2009<option value = '2010'> 2010

</select>

</nobr>

</td>

<td> <input type = 'text' size = 35 value = '' name = 'Kreditkarteninhaber'> </td>

</tr>

</table>

<br>

<table width = '100%' background = '../images/stylesbg.jpg' align = 'center'>

<tr> <td width = '10%' align = 'center'> <input type = 'submit' size = '30' value = 'Weiter'> </td> </tr>

</table>

</form>


Noch einmal wird überprüft ob der User auch wirklich alle Daten bekanntgegeben hat, dann wird der Erfolg der Bestllung verkündet. Außerdem werden die Daten über die Zahlungsform in eine eigene Tabelle eingetragen.


<%

CASE 'bestellen5'

Kontonr = Request.Form('Kontonr')

BLZ = Request.Form('BLZ')

Inhaber = Request.Form('Inhaber')

Kartenfirma2 = Request.Form('Kartenfirma')

Kartennr = Request.Form('Kartennr')

Monatfaellig = Request.Form('Monatfaellig')

Jahrfaellig = Request.Form('Jahrfaellig')

Kreditkarteninhaber2 = Request.Form('Kreditkarteninhaber')

Zahlungsart2 = Request.Form('Zahlungsart')

IF Zahlungsart2 = '' OR IsNull(Zahlungsart2) THEN %>

<script language = 'JavaScript'>

alert('Bitte wählen sie eine Zahlungsart aus indem Sie auf den gewünschten Optionsschalter klicken')

nonameorpass3()

</script>

<% END IF %>

<%

IF Zahlungsart2 = 'Bankeinzug' THEN

IF Kontonr = '' OR IsNull(Kontonr) OR BLZ = '' OR IsNull(BLZ) OR Inhaber = '' OR IsNull(Inhaber) THEN %>

<script language = 'JavaScript'>

alert('Sie müssen in alle Felder Daten eingeben - leider unumgänglich, sonst könnten Sie ja nicht bezahlen, und das wollen Sie ja nicht :-))')

nonameorpass3()

</script>

<% END IF %>

<% RS.Open 'SELECT * FROM Bestellung WHERE idSession = ' & ''' & idSession2 & ''' & 'AND Bestelldatum = ' & ''' & Date() & ''', idConn %>

<% idBestellung2 = RS('idBestellung') %>

<% IF NOT RS.EOF THEN

DO WHILE NOT RS.EOF

RS.MoveNext

IF NOT RS.EOF THEN

idBestellung3 = RS('idBestellung')

idBestellung2 = idBestellung2 & ', ' & idBestellung3

END IF

LOOP

END IF %>

<% RS.Close %>

<% RS.Open 'Insert Into Zahlung (idBestellung, nameKunde, Zahlungsart, Kontonummer, Bankleitzahl, Karteninhaber) VALUES (' & ''' & idBestellung2 & ''' & ', ' & ''' & EName & ''' & ', ' & ''' & Zahlungsart2 & ''' & ', ' & ''' & Kontonr & ''' & ', ' & ''' & BLZ & ''' & ', ' & ''' & Inhaber & ''' & ')', idConn %>

<% END IF %>

<% IF Zahlungsart2 = 'Kreditkarte'  THEN

IF Kartenfirma2 = '' OR Kartennr = '' OR Monatfaellig = '' OR Jahrfaellig = '' OR Kreditkarteninhaber2 = '' OR IsNull(Kartenfirma2) OR IsNull(Kartennr) OR IsNull(Monatfaellig) OR IsNull(Jahrfaellig) OR IsNull(Kreditkarteninhaber2) THEN %>

<script language = 'JavaScript'>

alert('Sie müssen in alle Felder Daten eingeben - leider unumgänglich, sonst könnten Sie ja nicht bezahlen, und das wollen Sie ja nicht :-))')

nonameorpass3()

</script>

<% END IF %>

<% RS.Open 'SELECT * FROM Bestellung WHERE idSession = ' & ''' & idSession2 & ''' & 'AND Bestelldatum = ' & ''' & Date() & ''', idConn %>

<% idBestellung2 = RS('idBestellung') %>

<% IF NOT RS.EOF THEN

DO WHILE NOT RS.EOF

RS.MoveNext

IF NOT RS.EOF THEN

idBestellung3 = RS('idBestellung')

idBestellung2 = idBestellung2 & ', ' & idBestellung3

END IF

LOOP

END IF %>

<% RS.Close %>

<% RS.Open 'Insert Into Zahlung (idBestellung, nameKunde, Zahlungsart, Kartenfirma, Kartennummer, Monatfall, Jahrfall, Kreditkarteninhaber) values (' & ''' & idBestellung2 & ''' & ', ' & ''' & EName & ''' & ', ' & ''' & Zahlungsart2 & ''' & ', ' & ''' & Kartenfirma2 & ''' & ', ' & ''' & Kartennr & ''' & ', ' & ''' & Monatfaellig & ''' & ', ' & ''' & Jahrfaellig & ''' & ', ' & ''' & Kreditkarteninhaber2 & ''' & ')', idConn %>

<% END IF %>

<script language = 'javascript'>

nonameorpass2()

</script>

<%

CASE 'bestellen6' %>

<br>

<font size = '+1'>

Herzlichen Gl&uuml;ckwunsch <% = EName %> !!<br>

Sie haben soeben folgende Waren bestellt :-))<br>

</font>

<br> <br>

<%

RS.Open 'Select * From Bestellung Where idSession = ' & ''' & idSession2 & ''', idConn

ZaehlerA = 0

ZaehlerC = 0

%>

<% ZaehlerD = 0 %>

<%

DO While Not RS.EOF

%>

<%

IF ZaehlerD = '0'  THEN

color1 = 'black'

color2 = 'white'

ELSEIF ZaehlerD = '1'  THEN

color1 = 'white'

color2 = 'black'

END IF %>

<table bgcolor = '<% = color1 %> ' width = '100%'>

<tr>

<td width = '33%'> <font color = '<% = color2 %> '> <% = RS('nameArtikel') %> </font> </td>

<td width = '33%'> <font color = '<% = color2 %> '> <% = RS('Autor') %> </font> </td>

<td width = '33%'> <font color = '<% = color2 %> '> Anzahl: <% = RS('Bestellmenge') %> St&uuml;ck</font> </td>

</tr>

<tr>

<td width = '33%'> <font color = '<% = color2 %> '> Einzelpreis: <% = RS('euroPriceArtikel') %> Euro</font> </td>

<td width = '33%'> <font color = '<% = color2 %> '> <% = RS('Bestellsumme') %> Euro gesamt</font> </td>

<td width = '33%'> <a href = 'details.asp?idSession2 = <% = idSession2%> &Artikel = <% = RS('idArtikel')%> &idUser2 = <% = idUser2%> &nameSparte = <% = nameSparte %> ' target = '_blank'> <font color = '<% = color2 %> '> Mehr Info</font> </a> </td>

</table>

<% IF ZaehlerD = '0' THEN

ZaehlerD = '1'

ELSEIF ZaehlerD = '1' THEN

ZaehlerD = '0'

END IF %>

<% ZaehlerB = RS('Bestellsumme') %>

<% ZaehlerA = ZaehlerA+ZaehlerB %>

<% ZaehlerC = ZaehlerC+1 %>

<% RS.MoveNext %>

<% Loop %>

<table width = '100%' background = '../images/stylesbg.jpg'>

<tr>

<td width = '33%'> <font color = 'white'> <strong> <% = ZaehlerC %> Artikel</strong> </font> </td>

<td width = '33%'> <font color = 'white'> <strong> <% = ZaehlerA %> Euro gesamt</strong> </font> </td>

<td width = '33%'> <font color = 'white'> <strong> <% = Round(ZaehlerA*13.7603, 2) %> ATS gesamt</strong> </font> </td>

</tr>

</table>

<% RS.Close %>

<br> <br>

<font size = '+1'>

Leider werden Sie nie bei Ihnen ankommen weil dies nur eine Probeapplikation ist *fg*<br>


</font>

<%

END SELECT

%>


Hier endet der Select Befehl und im Prinzip auch die Applikation - über die Menüleiste die ja in jedem Feld eingefügt ist kann der User aber erneut shoppen, muß allerdings den alten Warenkorb löschen.


</font>

</body>

</html>


styles.inc

Dies ist die Menüleiste, die wie bereits erwähnt in jede ander Datei eingefügt wurde.


<HTML>

<HEAD>

<TITLE> Warengruppen</TITLE>

<STYLE TYPE = 'text/css'>

<!--

A:link, A:visited

A:hover

-->


Hier wird definiert, daß Links weder unterstrichen noch färbig sein sollen. Außerdem wird bestimmt das aktive Links (der Mauszeiger ruht auf dem Link) unterstrichen sein sollen (Hover-Effekt).


</STYLE>

</HEAD>


<body background = '../images/stylesbg2.jpg'>


Der hier definierte Background gilt auch für die gesamte Datei, in die diese Datei eingefügt wird - die Pfad muß auch aus der Sicht der Datei, in der diese Datei eingefügt ist gesehen werden.


<span style = ' left:10px; top:15px;'> <a href = '../../default.html'> <img border = '0' width = '50' height = '49' alt = 'Zum Anfang unserer Homepage' src = '../images/backtostart.gif'> </a> </span>

<table align = 'center' width = '100%' background = '../images/stylesbg.jpg'>

<tr> <td align = 'center'>

<form action = 'artikel.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> &Sparte = ' Method = 'Post'>

<font color = 'white'>

<strong>

| <a href = '/shop/skripts/default.asp?idSession2 = <% = idSession2 %> &idUser2 = <% = idUser2 %> '> Start</a>


Hier der einzige interessante Teil dieser Datei - Dynamisch wird ein Optionsfeld erzeugt, das die verschiedenen Sparten samt Link darstellt - ausgeführt wird der Link mit einem Formular.


| <select name = 'Warengruppen'>

<% RS.Open 'Select * From Sparte', idConn %>

<% Do While Not RS.EOF %>

<option value = '<% = RS('idSparte') %> '> <% = RS('nameSparte') %>

<% RS.MoveNext %>

<% Loop %>

<% RS.Close %>

</select>

<input type = 'submit' value = 'Go!'>


Hier muß darauf geachtet werden, daß auch alle notwendigen Informationen zur Ansicht des Warenkorbs übergeben werden.


| <a href = 'warenkorb.asp?idSession2 = <% = idSession2 %> &command = ansehen'> <img border = '0' src = '../images/warenkorb.gif' alt = 'Was ist in meinem Warenkorb?'> </a>

| <a href = 'warenkorb.asp?idSession2 = <% = idSession2%> &Artikel = alle&command = delete'> <img border = '0' alt = 'Den Warenkorb löschen!' src = '../images/warenkorb2.gif'> </a>

| <a href = '../../hauptindex.htm'> Electronic Commerce</a>

| <a href = '../../index.htm'> Home</a> |

</strong>

</font>

</form>

</td> </tr>

</table>


</BODY>

</HTML>


idConnection.inc

Diese Datei wird auch beinahe überall inkludiert und baut immer die Verbindung zur Datenbank auf. Der Inhalt der Datei ist Ihnen bereits von der default.asp bekannt.


<%

SET idConn = Server.CreateObject('ADODB.Connection')


Hier setzen wir eine beliebige Objektvariable (idConn) und weisen ihr die Datenbankverbindung zu


SET RS = Server.CreateObject('ADODB.RecordSet')


Hier legen wir ein Objekt vom Typ RecordSet an und instanziieren es, dh: wird aus der Datenbank ein Datensatz (Recordset) gelesen, so wird er der Objektvariablen (hier: RS) zugewiesen


idConn.Open 'DSN = shopsysdata'


Die DSN entspricht dem Namen der Datenbank im ODBC Fenster - so kann die Verbindung erst aufgebaut werden.


idSession2 = Request.QueryString('idSession2')


Hier verlangen (request) wir die Zeichenkette (string) 'idSession2' und weisen sie erneut

der Variablen idSession2 zu. Im Unterschied zur default.asp brauchen wir hier nicht überprüfen, ob es die idSession2 überhaupt gibt, denn diese muß in der default.asp bereits erzeugt worden sein.


SET idConn2 = Server.CreateObject('ADODB.Connection')


Hier setzen wir eine zweite Objektvariable mittels der wir später aus der Datenbank zufällig Farben ermitteln


%>


default.css

.clsBold

#Gruppen

#Artikel

#einzelneArtikel

#Warenkorb

#WeitereInfo


Diese Style-Sheets-Datei ist sehr wenig ausgeprägt, CSS könnte in einer Applikation wie dieser viel stärker genutzt werden. Es sind hier eine Klasse und mehrere Ids definiert, die dann in jeder Datei, in der die default.css inkludiert ist, genutzt werden können.


details.asp

Diese Datei ist eine abgespeckte Version der xartikel.asp. Im Warenkorb hat der User die Möglichkeit sich Informationen zu einem der Artikel nochmals genau anzusehen - die Datei wird in einem neuen Fenster geöffnet und bietet keine interaktiven Möglichkeiten, eben 'nur' Information.


<!-- #include file = '../universalskripts/idConnection.inc' -->

<link rel = 'stylesheet' type = 'text/css' href = '../universalskripts/default.css'>

<% const conimgNotFound = '../images/imgNotFound.gif' %>

<% Artikel = Request.QueryString('Artikel') %>

<% nameSparte = Request.QueryString('nameSparte') %>

<% RS.Open 'SELECT * FROM Artikel WHERE idArtikel = ' & Artikel, idConn

nameArtikel = RS('nameArtikel')

longNameArtikel = RS('longNameArtikel')

%>


<html>

<head>

<title>

Artikel <% = nameArtikel %> der Sparte <% = nameSparte %>

</title>

<style type = 'text/css'>

<!--

A:link A:visited

A:active

-->

</style>

</head>

<body>

<%

varA = 1

%>

<center>

<table width = '100%'>

<tr>

<%

lnkImage = Server.MapPath(TRIM(RS('imgArtikel')))

IF lnkImage = 'C:Inetpubwwwrootshopimages' THEN lnkImage = conimgNotFound END IF

%>

<td align = 'center' rowspan = '6'>

<IMG SRC = '<% = lnkImage %> ' width = '150' height = '210' ALT = '<% = longNameArtikel %> '>

</td>

<td colspan = '3'>

<%

idConn2.Open 'DSN = shopsysdata; UID = Klient2'

SET RS2 = idConn2.Execute('SELECT * FROM Farbe')

RANDOMIZE(Time())

varC = Int(41 * Rnd +1)

DO WHILE NOT RS2(TRIM('idFarbe')) = varC AND NOT RS2.EOF

RS2.MoveNext

LOOP

color = RS2('Farbe')

RS2.Close

idConn2.Close

%>

<font align = 'left' color = '<% = color %> ' size = '+1' family = 'Comic Sans MS'>

<% = RS('nameArtikel') %>

</font>

</td>

<td valign = center>

<% = Stueckzahl %> St&uuml;ck

</td>

<td>

Preis/Stk.: &nbsp; <% = RS('euroPriceArtikel') %> &nbsp; Euro

</td>

</tr>

<tr>

<td valign = top>

Autor(en):

</td>

<td valign = top colspan = '2'>

<% = RS('Autor') %>

</td>

<td>

</td>

<td>

<% atsPreis = RS('euroPriceArtikel')*13.7603 %>

Preis/Stk.: &nbsp; <% = Round(atsPreis, 2) %> &nbsp; ATS

</td>

</tr>

<tr>

<td>

ISBN:

</td>

<td colspan = '2'>

<% = RS('ISBN') %>

</td>

<td colspan = '2'>

</td>

</tr>

<tr>

<td colspan = '3'>

<% = RS('Cover') %>

</td>

<td width = '45%' colspan = '2' rowspan = '3'>

Wenn Sie dieses Fenster nicht mehr brauchen schlie&szlig;en Sie es einfach :-)

</td>

</tr>

<tr>

<td>

Erschienen:

</td>

<td colspan = '2'>

<% = RS('Erscheinung') %>

</td>

</tr>

<tr>

<td colspan = '3'>

<% = RS('Umfang') %>

</td>

</tr>

<tr>

<td colspan = '6'>

<br>

<u>

Eine Kurzbeschreibung des Artikels:

</u>

<br>

<i>

<% = RS('descrArtikel') %>

</i>

</td>

</tr>

<tr>

<td colspan = '6'>

<a href = '<% = RS('mehrInfo') %> ' > <i> Weitere Informationen</i> </a>

finden Sie bei

<a href = 'http://www.amazon.at'> <i> Amazon</i> </a>

</td>

</tr>

</table>

</center>

</body>

</html>


<%

RS.Close

idConn.Close

%>


Einbinden der Informationen in die Homepage


Um die verarbeiteten Informationen über Electronic Commerce sowie den Warenkorb den Schüler an der Bundelshandelsakademie Amstetten, aber auch allen anderen, die sich für dieses Thema interessieren, darstellen zu können, wurde eine Homepage erstellt. Die Erstellung der Homepage erfolgte mit der Programmiersprache Html (Hypertext markup language) im Text Editor und mit Hilfe eines Html Editors.


Der Aufbau dieser Homepage sieht folgendermaßen aus:


Nach dem Aufrufen der Homepage (startseite.htm) gelang man zuerst auf die Startseite.

Von dieser Seite aus kann man durch anklicken der Links auf die Seiten Electronic Commerce und Warenkorb wechseln.

Beim Wechseln auf die Seite Electronic Commerce wird ein Index aufgerufen der zu den Seiten Electronic Commerce, Entwicklung und derzeitiger Stand, elektronischer Marktplatz, Online-Marketing, elektronischer Kaufvertrag, Homebanking, elektronische Zahlungssysteme, Sicherheit beim Einkaufen im Internet, Quellen, Links zu Einkaufsmöglichkeiten Verweise enthält.

Auf allen Seiten der Homepage (inkl. Warenkorb), außer auf der Startseite, verläuft eine waagerechte Leiste am oberen Rand des Fensters, mit der man zu den selben Seiten wechseln kann wie auf der Startseite.


Neben der Wiedergabe des Erarbeiteten Materials über Electronic Commerce hat diese Homepage auch noch die Funktion eines Präsentationsmediums bei der Vorführung der Projektarbeit.

Zusammenfassung


Wir haben in diesem Projekt versucht, die gesammelten Informationen zusammenzufassen und einen klaren Überblick über Electronic Commerce zu verschaffen. Da sich im Bereich des Electronic Commerce derzeit die Soft- und Hardware-Voraussetzungen häufig ändern, ist es sehr schwer immer den gerade aktuellen Stand widerzuspiegeln.


Electronic Commerce stellt jedoch nicht nur an die Soft- und Hardware Anforderungen, sondern auch Abteilungen eines Unternehmens. Hier bildet sich daher auch mit dem Online-Marketing ein ganz neuer Bereich in der Unternehmensorganisation. Natürlich werden auf diesem Gebiet dadurch auch neue Berufsbilder geschaffen. Obwohl sich im elektronischen Handel noch viel Probleme ergeben und die Einstellung von Konsumenten und Anbieter zu diesem Medium noch skeptisch ist, kann man in der Zukunft sicher mit einem deutlichen Zunehmen des Electronic Commerce rechnen. Als Vorreiter des Electronic Commerce kann man die Möglichkeit des Homebankings mit dem PC sehen. Da in diesem Bereich - ebenso natürlich auch beim Verkauf über das Internet - Geld eine wichtige Rolle spielt und damit auch kriminelle Aktionen verbunden sein könnten, ist die Sicherheit bei der Übertragung von Daten über den elektronischen Kanal besonderes wichtig. Um Kaufverträge übers Internet erfolgreich abschließen zu können, müssen Daten wie Kreditkartennummern, Paßwörter, Kaufvertrag, Rechnungssummen usw. verschlüsselt werden. Zur Verschlüsselung gibt es grundsätzlich zwei Verfahren (DES - Date Encryption Standard und RSA - benannt nach den drei Erfindern dieses Verfahrens). Wie diese Verschlüsselungssysteme angewandt werden wird in der symmetrischen (Private oder Secret Key) und der asysmmetrischen (Public Key) Verschlüsellung festgelegt.


Auf der von uns erstellten Homepage haben wir das gesammelt und überarbeitete Material eingebunden. Diese Homepage soll, für alle die sich für den Bereich Electronic Commerce interessieren oder damit zu tun haben, einen Überblick über dieses Gebiet darstellen. Mit dem praktischen Beispiel eines Warenkorb (engl.: Shopping Cart) ist es auf der Homepage auch möglich einen solchen Einkauf über das Internet nachzuvollziehen. Denn in letzter Zeit trifft man immer öfter auf solche Warenkörbe, was mit Sicherheit auf den Boom des Electronic Commerce zurückzuführen ist. Um dies zu verwirklichen muß dem Kunden ermöglicht werden, seine Bestellung online zu tätigen. Weiters müssen diese Bestellinformationen dann so abgelegt werden, daß der Anbieter sie auch nachvollziehen kann - möglichst bequem natürlich. Zu diesem Zweck kann man etwa eine Datenbank verwenden (in unserem Fall eine Access-Datenbank) Dort werden alle Bestellungen in einer bestimmten Tabelle in einer bestimmten Form abgespeichert.

Weiters besteht dann natürlich die Möglichkeit der Implementierung von verschiedenen Zahlungswegen, auf die der Kunde zurückgreifen kann (zB Zahlung mit Kreditkarte, elektronischem Bargeld, über Kundenkonto, auf herkömmliche Weise, ). Hier kommt dann die sichere Datenübertragung ins Spiel. Daten wie Kreditkartennummer und Ablaufdatum der Kreditkarte sollten verschlüsselt übertragen werden, um jeglichen Mißbrauch zu verhindern. Diese Sicherheit ist bei unserer Applikation nicht gegeben - es war aber auch nie unser Ziel dies zu erreichen, denn der nötige Arbeitsaufwand und das nötige Wissen hätte den Zeitrahmen dieser Projektarbeit gesprengt.


Die Hauptrolle in diesem Projekt spielt jedoch die Tatsache, daß die Zukunft den Bereich Electronic Commerce mit aller Wahrscheinlichkeit eine positive Entwicklung bescheren wird. Somit ist es von nicht unerheblicher Bedeutung, so viel wie möglich darüber zu wissen.

Literaturverzeichnis



Quellen: Electronic Commerce


Amazon.com schreibt rote Zahlen. In: Teletextmeldung vom 13. Dezember 1999.

Cole, Tim: Starker Schlüssel in InternetWorld. S. 40-41. gefunden im Internet.

ede: Standardisierter Geschäftstransfer über Internet. In: Wiener Zeitung vom 20. Jänner 2000.

Eiffe, Natalie: E-Commerce schafft neue Berufsbilder. In: Bildung - Das Journal

GVU's WWW User Survey, http://www.gvu.gatech.edu/

http://www.d-vision.de/

Informationen, Spiele, Shopping: Mit dem WAP-Handy ins Netz. In: Die Presse vom 19. Jänner 2000.

Interactive Media in Retail Group, http://www.imrg.org

Koch, E.R.; Sperber, J.: Die Computermafia. Rowalt Taschenbuchverlag. gefunden im Internet.

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

Kuntze, Roland: Für eine Handvoll Dollars in PC Magazin 9/97. S. 266-272. gefunden im Internet

Langes Warten auf den Cybermarché. Der Standard vom 1. Februar 2000. S. 2.

LetsBuyIt.com nun auch in Österreich. In: Die Presse vom 20. Jänner 2000.

Pommerening, Prof. Dr. Klaus in: Datenschutz und Datensicherheit. gefunden im Internet.

Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

Ungerboeck, Luise: Der neue Hit heißt: 'Mobile Commerce'. In: Der Standard vom 31. Jänner 2000.

vom 4. Februar 2000. S.11.

Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

wof: Shopping ohne Gedränge rund um die Uhr. In: Der Standard vom 3. Februar 2000. S. 28.

wof: Suche nach Preisvorteilen. In: Der Standard vom 3. Februar 2000. S. 28.

Zimmermann, C.: Der Hacker. Landsberg am Lech: MVG Verlag 1996. gefunden im Internet.


Quellen: Sicherheit


http://www.a-sign.datakom.at/

http://www.CyberCash.de/

http://www.cybercash.de/

http://www.d-box.to

http://www.e-commerce-systeme.de

http://www.heise.de

http://www.mechip.com

http://www.otp.org

http://www.schuelerakademie.de

http://www.set.ch

http://www.siz.de

http://www.wolfgang-kopp.de

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998


Quellen: Homepage, Warenkorb

Krause, Jörg: Microsoft Active Server Pages. Bonn: Addison Wesley Longman Verlag GmbH 1998.

Steyer, Ralph: HTML 4 - Das Computertaschenbuch. Düsseldorf: Data Becker 1999

Wilhelms, Gerhard: Kopp, Markus: Java professionell. Bonn: MITP-Verlag GmbH 1999.




mail: irga@strontium90.de, http://www.strontium90.de, http://www.pro-net.de/~teisenga

Da es leider nicht möglich war, eine Software, die die sichere Datenübertragung zeigen soll, zu beschaffen, konnten wir diesen Punkt nicht erfolgreich bewältigen. Grund: Die Kreditanstalten dürfen solche Software nicht ausgeben!

vgl. Cole, Tim: Starker Schlüssel in InternetWorld. S. 40-41. gefunden im Internet.

vgl. Koch, E.R.; Sperber, J.: Die Computermafia. Rowalt Taschenbuchverlag. gefunden im Internet.

vgl. Kuntze, Roland: Für eine Handvoll Dollars in PC Magazin 9/97. S. 266-272. gefunden im Internet

vgl. Pommerening, Prof. Dr. Klaus in: Datenschutz und Datensicherheit. gefunden im Internet.

vgl. Zimmermann, C.: Der Hacker. Landsberg am Lech: MVG Verlag 1996. gefunden im Internet.

vgl. Cole, Tim: Starker Schlüssel in InternetWorld. S. 40-41. gefunden im Internet.

vgl. Koch, E.R.; Sperber, J.: Die Computermafia. Rowalt Taschenbuchverlag. gefunden im Internet.

vgl. Kuntze, Roland: Für eine Handvoll Dollars in PC Magazin 9/97. S. 266-272. gefunden im Internet

vgl. Pommerening, Prof. Dr. Klaus in: Datenschutz und Datensicherheit. gefunden im Internet.

vgl. Zimmermann, C.: Der Hacker. Landsberg am Lech: MVG Verlag 1996. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Interactive Media in Retail Group, http://www.imrg.org

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Amazon.com schreibt rote Zahlen. In: Teletextmeldung vom 13. Dezember 1999.

vgl. Eiffe, Natalie: E-Commerce schafft neue Berufsbilder. In: Bildung - Das Journal vom 4. Februar 2000. S.11.

vgl. Langes Warten auf den Cybermarché. Der Standard vom 1. Februar 2000. S. 2.

vgl. ede: Standardisierter Geschäftstransfer über Internet. In: Wiener Zeitung vom 20. Jänner 2000.

vgl. LetsBuyIt.com nun auch in Österreich. In: Die Presse vom 20. Jänner 2000.

vgl. wof: Shopping ohne Gedränge rund um die Uhr. In: Der Standard vom 3. Februar 2000. S. 28.

vgl. wof: Suche nach Preisvorteilen. In: Der Standard vom 3. Februar 2000. S. 28.

vgl. Ungerboeck, Luise: Der neue Hit heißt: 'Mobile Commerce'. In: Der Standard vom 31. Jänner 2000.

vgl. Informationen, Spiele, Shopping: Mit dem WAP-Handy ins Netz. In: Die Presse vom 19. Jänner 2000.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

http://www.d-vision.de/

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. GVU's WWW User Survey

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998. S. 351 - 352.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998. S. 87.

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998. S. 88.

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

http://www.d-vision.de/


vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998. S. 93.

vgl. http://www.cybercash.de

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998. S. 91.

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Schuster, Rolf; Färber, Johannes; Eberl Markus: Digital Cash - Zahlungssysteme im Internet. gefunden im Internet.

vgl. Wayner, Peter: Digital Cash - Commerce on the Net. gefunden im Internet.

vgl. Cole, Tim: Starker Schlüssel in InternetWorld. S. 40-41. gefunden im Internet.

vgl. Koch, E.R.; Sperber, J.: Die Computermafia. Rowalt Taschenbuchverlag. gefunden im Internet.

vgl. Kuntze, Roland: Für eine Handvoll Dollars in PC Magazin 9/97. S. 266-272. gefunden im Internet

vgl. Pommerening, Prof. Dr. Klaus in: Datenschutz und Datensicherheit. gefunden im Internet.

vgl. Zimmermann, C.: Der Hacker. Landsberg am Lech: MVG Verlag 1996. gefunden im Internet.

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. http://www.e-commerce-systeme.de

vgl. http://www.schuelerakademie.de

vgl. http://www.wolfgang-kopp.de 14.08.99

vgl. http://www.a-sign.datakom.at

vgl. http://www.mechip.com 01.10.99

vgl. http://www.heise.de 10.09.99

vgl. http://www.siz.de/siz/scommerce.nsf

vgl. http://www.d-box.to/technik/index.htm 01.10.99

vgl. http://www.otp.org 10.09.99

vgl. http://www.set.ch 01.10.99

vgl. http://www.set.ch 01.10.99

vgl. Krause, Jörg: Electronic Commerce (Geschäftsfelder der Zukunft heute nutzen). Wien: Hanser 1998

vgl. http://www.CyberCash.de/







Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen







Neu artikel