Wie übertragen Sie sicher Kreditkarteninformationen zwischen Seiten in PHP? Ich erstelle eine E-Commerce-Anwendung und möchte, dass die Benutzer die Kasse folgendermaßen durchlaufen:
Informationen eingeben - & gt; Überprüfung - & gt; Bestellung abschließen
Problem ist, dass ich nicht sicher bin, wie ich Kreditinformationen von dem Zeitpunkt an, zu dem der Benutzer sie eingibt, sicher übergebe, wenn ich sie verarbeite (im Schritt "Bestellung abschließen"). Ich habe gehört, dass die Verwendung von Sitzungen unsicher ist, sogar mit Verschlüsselung.
Jede Hilfe wäre willkommen!
Ich würde es nirgendwo speichern. Es ist zu viel Risiko und wahrscheinlich nicht ethisch.
Senden Sie eine Anfrage an das Zahlungsgateway, indem Sie ein Formular über https senden und speichern Sie nur das Ergebnis der Transaktion.
Sie interessieren sich wahrscheinlich nur, wenn die Transaktion genehmigt oder abgelehnt wurde. Wen kümmert es, was die Nummer ist?
Speichern Sie die Kreditkarteninformationen nicht in der Sitzung, speichern Sie sie nicht in einer Datenbank, speichern Sie sie nicht in einer Datei. Schreiben Sie stattdessen die cc-Informationen in eine versteckte html-Eingabe zurück auf die Überprüfungsseite.
Der Programmablauf würde also so funktionieren:
Die Vorteile dieser Methode sind zweifach:
Dieser letzte Punkt wirft ein anderes Problem auf: Indem Sie eine Überprüfungsseite haben, verdoppeln Sie die Anzahl, wie oft die verschlüsselten Kreditkartendaten über das Netzwerk übertragen werden. Bei dieser Methode gibt es mindestens 4 Übertragungen: Client zu Server, Server zu Client, Client zu Server (wieder), dann Server zu Gateway. Ohne Überprüfung gibt es mindestens zwei Übertragungen: Client zu Server und Server zu Gateway. Ist der Komfort einer Überprüfungsseite das Risiko zusätzlicher Übertragungen wert? Das ist eine Entscheidung, die Sie als Webentwickler (und Ihr Kunde) treffen müssen.
Zuerst sollten Sie das HTTPS-Protokoll verwenden, um sicherzustellen, dass die Verbindung verschlüsselt ist.
Danach können Sie die Daten in% super-global $_SESSION
speichern. Die Daten werden auf Ihren Servern gespeichert und sind daher relativ sicher.
Sie könnten eine ähnliche Technik verwenden, bei der Sie die Informationen in eine Order-Datenbank einfügen, wobei der Schlüssel eine GUID oder etwas anderes ist, das ziemlich zufällig und eindeutig ist. Wenn die Person dann ihre Bestellung ändert / überprüft, sollte die Bestell-ID im GET-Teil der URL gespeichert sein (oder wenn Sie paranoid sind, eine Cookie- / Sitzungsvariable):
%Vor%Um zusätzliche Sicherheit zu bieten, können Sie auch eine IP-Adresse in der Auftragstabelle speichern und sicherstellen, dass die IP und die Auftrags-ID übereinstimmen.
Eine Alternative ist die Verwendung eines Zahlungsprofil-Dienstes wie den Customer Information Manager von Authorize.net (dort sind andere auch). Sie speichern die Zahlungsinformationen in einem Profil über ihre API und verwenden dann die Profil-ID, wenn Sie die Karte tatsächlich aufladen. Auf diese Weise speichern Sie niemals die Daten auf Ihren Servern.
Nicht mein Fachgebiet, aber ich denke, Sie möchten es in einer Sitzung speichern, aber auch ein "Synchro-Token" (oder wie auch immer die Kinder es heute nennen) verwenden, um CSRF-Angriffe zu vermeiden.
Natürlich möchten Sie https (richtig) verwenden, indem Sie sensible Daten in den URL- und versteckten Feldern vermeiden und vermeiden, dass sehr sensible Informationen in irgendeiner Antwort usw. gesetzt werden.
Ich denke, ich muss zustimmen. Das Speichern von Kreditkartennummern ist ein zu großes Risiko und die Konsequenzen könnten weit hergeholt sein.
Der ideale Weg wäre, die Informationen an einen Prozessor eines Drittanbieters weiterzuleiten und einfach das Ergebnis zu verwenden, um die Skriptlogik zu formen.
%Vor%Ich hoffe, Sie bekommen den Punkt ...:)
Tags und Links php security e-commerce credit-card