Robert: Sicherheit eines Bestellvorgangs

Hallo, liebe Wissenden...

eine Frage...
ich habe ein Formular erstellt, mit dessen Hilfe man Bestellungen aufgeben kann.
Nach  dem Versenden der Eingaben, werden diese (nach einem Check...
auf böses Blut) in eine neue Datei geschrieben, deren Name aus dem
Datum und einem Counterwert gebildet wird <=>
my $t = time();
my $newfilename = $t . “_“ . $counter . „.dat“;

(die Counterdatei wird sogar ge-flock-t :-))
Um die angegebene E-Mailadresse zu prüfen, versende ich eine E-Mail und bitte um Bestätigung. In dieser Email befindet sich ein Formular
mit einem hidden-input, welcher als value den Namen der Datei
(ohne „.dat“) beinhaltet. Beim Empfang der Bestätigungsemail
überprüfe ich den erhaltenen Dateinamen auf alle Zeichen die keine Ziffern oder „_“ sind.
Danach wird die entsprechende Datei geöffnet, ausgelesen, in eine E-Mail gepackt (die Daten) und an mich verschickt.

Meine Frage... wie sicher ist dieser Bestellvorgang...
übersehen ich etwas wesentliches... ich arbeite erst seit 2 Monaten mit Perl.
Ich habe viel über die Gefahren, welche u.U. mit der Funktion:
open() zusammenhängen, gelesen... habe ich auch alles verstanden? hmm...

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

Robert.

  1. Hallo Robert,

    obwohl selbst ein Befürworter des Mittelstandes ist das, was Du beschreibst einer der Gründe, weshalb ich bein einem kleinen Shop stets so ungern meine Kreditkartennummer oder Kontoverbindung herausrücke.

    Kein Wort von Verschlüsselung, sicherem Transfer der Bestelldaten auf einen Rechner, der nicht am Netz ist, etc.

    .. aber das nur mal nebenbei ..

    .. und noch nebenbei:

    Ich schaufel' mir meine Mail immer in's Outlook. Dann kappe ich die Verbindung zum Internet und erst dann öffne ich die Mails. Bei einer HTML-Mail (ich *hasse* diese Dinge - imho einer der schlimmsten Erfindungen des Informationszeitalters) versucht diese dann fleißig auf's Web zuzugreifen ... aber ich lasse sie nicht (was interessieren mich bunte Bilder?)

    .. und außerdem hab' ich noch eine Firewall, die nach meinem Willen HTML eMails nicht erlaubt auf's Web zuzugreifen.

    Und für Dich relevant: es gibt ja auch Leute, die haben extra eMail Clients, die *kein* HTML interpretieren. Oder sie verwenden Web-Mailer (mail.lycos.de, mail.yahoo.de, etc.) wo Du nicht sicher sein kannst, daß Formulare auch wirklich funktionieren. Oder, oder, oder.

    Aber zum eigentlichen Thema:
    Hast Du dich noch nie irgendow bei einem Online-Dienst angemeldet? Schätze schon. Dann kennst Du ja das Procedere. Sende eine eMail mit einem von Dir generierten Link auf z.b. cgi-bin/-lange-lange-nummer/xxx.html oder cgi-bin/confirm.pl?langa-lange-nummer
    Dort kannst Du ja ein Formular vorhalten, wo Du weitere Daten anforderst. Tip: melde Dich mal bei eBay an (nicht daß die ein gutes Beispiel wären, aber ein minimum an professinalität ist dort trotz des ganzen MS-Geklöns dennoch vorhanden).

    Ach ja (ich weiß, das ist gemotze): verrate doch mal den Namen von Deinem Internet-Laden ... nicht daß ich am ende meine Kreditkarteninformationen an einen Shop übermittle, der von jemanden geschrieben wurde, der - zumindest noch - nicht *wirklich* das Wissen hat, um mit solch sendieblen Daten umzugehen. Ach ja: auch meine Adreßinformationen schreibe ich ungerne in den Datenbestand unsichererer Web-Shops - und welches meine Lieblingsfarbe bei Lümmeltüten (grün) ist, muß ja nun auch nicht jeder (.. minimal-talentierte Kracker) wissen.

    Wirklich im Ernst: den eigentlichen Shop mit Payment und vertraulichen Daten würde ich an Deiner Stelle von einem guten Provider anmieten (apropos: kein Wort von SSL). Die Warenpräsentation kannst Du ja durchaus selbst bauen. Feuer, Schere, Messer, Licht, Security .. du weißt schon ;-)

    Nix für ungut!

    K@rl

  2. Nach  dem Versenden der Eingaben, werden diese (nach einem Check...
    auf böses Blut) in eine neue Datei geschrieben, deren Name aus dem
    Datum und einem Counterwert gebildet wird <=>
    my $t = time();
    my $newfilename = $t . “_“ . $counter . „.dat“;

    Wohin schreibst Du die Datei? In Deinen Webroot?

    Danach wird die entsprechende Datei geöffnet, ausgelesen, in eine E-Mail gepackt (die Daten) und an mich verschickt.

    Wirkt für mich unnötig kompliziert, fehleranfällig und sicherheitsproblematisch. Warum verschickst Du die Daten nicht gleich per Email und löschst nicht bestätigte von Hand? Warum der Extra-Schritt mit der Datei?

    Übrigens ist Email auch nicht gerade sicher; Kreditkarten-Infos würde ich da nicht verschicken (außer mit PGP verschlüsselt).

    Ich habe viel über die Gefahren, welche u.U. mit der Funktion:
    open() zusammenhängen, gelesen... habe ich auch alles verstanden?

    Woher sollen wir das wissen?

    Hier mal kurz als Info für ein paar Mindeststandards für Webshops:

    1. SSL-Verbindung (zumindest bei Anmeldung und Bestellung)
    2. Speichern von Bestelldaten in gesicherter Datenbank oder - falls nicht vorhanden - in Datei(en) außerhalb des Webroots.
    3. Kein Transfer von sensiblen Daten (Kreditkarte, Konto-Nr. etc.) per unverschlüsselter Email.