Robert: Bestellungsformular... Wege der Bestätigung!

Hallo, liebe Wissenden...

ein kleines Problem.. eine winzige Frage...

auf meiner Homepage biete ich die Möglichkeit einer Katalogbestellung an.
Nach der Prüfung der Eingaben, wird eine Auftragsbestätigung an den Besteller (an die angegebene E-Mailadresse) versendet.
Erst nach dieser Bestätigung wird endgültig eine Bestellung an mich geschickt.
Meine Frage bezieht sich auf die Art bzw. den Vorgang der Bestätigung...

eines steht fest... ich möchte die Bestätigung über E-Mail abwickeln... damit kann ich die Existenz der angegebenen E-Mailadresse überprüfen... na ja... wenigstens etwas :-)

In der Auftragsbestätigungsemail werden alle Daten des Bestellers + die Anzahl und Art der Kataloge nochmals aufgeführt. Die Email beinhaltet ein Formular, mit dem die Bestätigung ausgeführt werden kann.
Meine Frage ist nun... phuuu...

was ist die bessere Lösung:

a. alle Daten des Bestellers werden mit dieser Email (nach dem betätigen des Submit-Buttons) an ein weiteres CGI-Script geleitet und dann an mich verschickt...
oder...
b. alle Daten des Bestellers werden beim Ausfüllen des Bestellformulars auf dem Server in einer Datei gespeichert. Bei der Bestätigung würde ein weiteres CGI-Script gestartet, welches als Parameter den Namen der entsprechenden Datei bekommen würde. Nach dem Auslesen... Versand an mich.

Mich interessiert, welche der beiden Lösungen sicherer ist (in bezug auf die Möglichkeit der Datenmanipulation u.ä.) ...
oder... bin ich paranoid?

Für Anregungen und Hilfe bin ich im voraus dankbar!

Robert

  1. Hi, Robert

    Was hältst du davon, bei der Bestellung die Daten erstmal irgendwo abzulegen und anschließend eine Bestätigungsnachricht, die einen Link inklusiver _eindeutiger ID_ enthält, zu verschicken?

    Mit dem Click auf den Link bestätigt der Käufer, sieht eine nette Seite, auf der du dich für das entgegengebrachte Vertrauen bedankst und startet gleichzeitig das Script, dass wiederum dir die Bestätigung zukommen lässt.

    Das funktioniert zwar jetzt nicht mehr ausschließlich über Email, da du ja einen Browser voraussetzt, schließt mit der eindeutigen ID aber aus, dass irgendein Spaßvogel sein Unwesen treibt. Auch kennt ja nur der tatsächliche Empfänger (=Besteller?) den korrekten Link. Sicherheitshalber weise in der Nachricht darauf hin, dass bei ungewollter Bestellung _nicht_ zu bestätigen ist ;-)

    So funktioniert's jedenfalls bei einigen mir bekannten Newsletter-Systemem ziemlich prächtig.

    LG Orlando

  2. was ist die bessere Lösung:

    a. alle Daten des Bestellers werden mit dieser Email (nach dem betätigen des Submit-Buttons) an ein weiteres CGI-Script geleitet und dann an mich verschickt...
    oder...
    b. alle Daten des Bestellers werden beim Ausfüllen des Bestellformulars auf dem Server in einer Datei gespeichert. Bei der Bestätigung würde ein weiteres CGI-Script gestartet, welches als Parameter den Namen der entsprechenden Datei bekommen würde. Nach dem Auslesen... Versand an mich.

    Mich interessiert, welche der beiden Lösungen sicherer ist (in bezug auf die Möglichkeit der Datenmanipulation u.ä.) ...
    oder... bin ich paranoid?

    Lieber Robert,
    wenn schon Paranoia, dann eher beim Öffnen von Dateien zum Schreiben als beim Versand von e-mails. Gefahr im Verzug ist vor allem geboten, wenn Du den Dateinamen irgendwie aus Benutzereingaben erstellst. Da kann der gefürchtete Cracker seinen Ansatz suchen. Wenn Du allerdings eine feste Datei nimmst, deren Namen Du im Script selber unveränderbar festlegst, ist das mit der Datei auch sicher. Du solltest das allerdings nur machen, wenn Du die Datei auch in irgendeiner Weise nutzt, etwa so wie in der Antwort von Orlando angegeben.

    Nochmal zum Problem der Sicherheit.

    Wenn Du Eingaben aus Formularen benutzt, um daraus Schreibzugriffe und entsprechende Dateinamen zu erzeugen, ist äußerste Vorsicht geboten. Vor allem Prüfung der Eingaben mit JS sind leicht zu umgehen. Auch Informationen aus versteckten Feldern, etwa Preisangaben oder dergl. ist nicht zu trauen. Infos zu diesem Thema findest Du in den entsprechenden Büchern/Foren unter Erläuterungen zum Taint-Modus (Schalter -T in der #!-Zeile), in Wall, "Programmieren mit Perl" im Abschnitt "Sicherheit".

    So leicht ist ein gut konfiguriertes System nicht zu knacken, auch wenn Dein Script nicht OK ist, aber man sollte so wenig Einbruchsmöglichkeiten öffnen wie möglich. Wenn Du die Dateinamen aus Benutzereingaben bzw. Umgebungsvariablen zusammensetzt, ist der erste Sicherungsschritt, alle Möglichkeiten auszuschließen, in ein anderes als in das gewünschte Verzeichnis zu schreiben. Entsprechende reguläre Ausdrücke zur Überprüfung findest Du an der angegebenen Stelle in "Programmieren mit Perl".

    Viel Erfolg beim Basteln

    Mathias Bigge