Mathias Bigge: Bestellungsformular... Wege der Bestätigung!

Beitrag lesen

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