2010-02-16 5 views
5

Auf Schritt 3 habe ich ein Formular, das eine Kreditkarte akzeptiert, Schritt 4 druckt die Informationen einschließlich der letzten 4 Ziffern der Kreditkarte, und Schritt 5 muss ich die vollständige CC# wissen, um es zu verarbeiten und zu senden meine https-Verbindung zu einem Drittanbieter - sollte ich es über versteckte Eingänge oder $_SESSION speichern, damit ich zwischen dem 3. und 5. Schritt darauf zugreifen kann?Sicherster Weg, Kreditkartennummer durch ein mehrstufiges Formular zu übergeben?

FYI: Meine gesamte Website ist bereits https'd.

Antwort

9

Nehmen Sie die Kreditkartennummer als letzten Schritt, damit Sie sie nicht speichern müssen. Es gibt viele rechtliche Probleme beim Speichern dieser Informationen.

+0

Nun, das Problem damit ist, dass der Kunde bereits entschieden hat, mit der Bestellung der Formularschritte zu gehen, es wäre wirklich ein Aufwand und wahrscheinlich außerhalb meiner Reichweite, sie zu beeinflussen, dies zu tun. –

+2

Sie können diesen Workflow mit Braintree beibehalten. In Ihrem dritten Schritt können Sie die Kreditkarte im Braintree-Kreditkartentresor speichern. Braintree wird Ihnen ein Token geben, mit dem Sie die Kreditkarte später belasten können. Sie können die maskierte Kreditkartennummer in Ihrem vierten Schritt abrufen, um sie dem Benutzer zur Bestätigung anzuzeigen. Und dann, um die Kreditkarte zu belasten, führen Sie in Ihrem fünften Schritt einen API-Aufruf mit dem Token von Schritt 3 aus. Braintree kann sowohl die Speicherung als auch die Übertragung von Kreditkartendaten aus Ihrer Umgebung verhindern. getbraintree.com Disclosure: Ich arbeite für Braineree. –

0

keiner Weise. Sie sollten es (irgendwie) verschlüsselt auf dem Server speichern.

+0

Sehen Sie meine Bearbeitung, es ist SSL'd - gut genug? –

+0

Nein, SSL'ed ist definitiv nicht gut genug. –

+0

Definitiv nicht - SSL verschlüsselt nur den Kanal. Es sollte verschlüsselt gespeichert werden, wenn es überhaupt gespeichert wird, was es wahrscheinlich nicht sein sollte. – thetaiko

1

Nicht speichern. Es gibt viele Kreditkartenverarbeitungsanlagen da draußen. Wenn Sie diese Funktionalität nicht unbedingt im Haus haben müssen, tun Sie es nicht.

Im Ernst, nehmen Sie Ihre wählen.

+0

Wie würde ich es berechnen, wenn ich es nicht speichern kann? Unter Laden verstehe ich Seiten, nicht in einer Datenbank oder so. –

+0

Sie laden es nicht auf. Sie übergeben die Verantwortung der Sicherung und Belastung der Karte zu einem Dienst, der dies für Sie tut. Die oben genannten haben alle Optionen, um die verschlüsselten Daten zur Verarbeitung an ihre Site zu senden. Sie senden dann das Ladungsergebnis an Ihre Site zurück. –

+0

Eigentlich sollte ich neu formulieren, dass ich es an einen anderen Dienst weitergebe, ich werde den CC nicht manuell mit meinem eigenen Code aufladen, ein Drittanbieter ist es, aber der Code, um den CC an den Drittanbieter zu liefern, ist im 5./letzten Schritt, und ich betrete den CC im 3. Schritt. –

2

SSL schützt die auf der Festplatte gespeicherten Daten nicht. Darüber hinaus werden PHP-Sitzungsdaten standardmäßig im Dateisystem unter einem temporären Verzeichnis mit minimalen Berechtigungen gespeichert. So werden die Daten nicht nur im Klartext gespeichert, sondern können auch von vielen verschiedenen Systembenutzern (abhängig von Ihrer Webserver-Konfiguration) abgerufen werden.

Wenn Sie eine mehrstufige Checkout-Prozess implementieren möchten, würde ich vorschlagen, einige AJAX/Javascript Magie auf der Seite des Browsers. Sie können die Abrechnungsinformationen mithilfe einer Reihe von DIVs erfassen, die ausgeblendet/zusammengebrochen sind, und den vollständigen Datensatz auf einmal versenden und die CC-Daten einmalig an Ihren Server senden, der die CC-Daten dann an Ihren Zahlungsprozessor weiterleitet.

+1

Aber wie würden Sie streng serverseitige Verarbeitung unterstützen, wenn JS deaktiviert ist? –

+0

Für Nicht-JavaScript-Benutzer benötigen Sie 1) eine Lösung beschrieben von Chris 'Antwort oder 2) senden Sie die Bestätigungsmeldung mit CC-Informationen in einem versteckten Feld zurück an den Benutzer. Die zweite Option kann Probleme verursachen, wenn die Seite vom Browser oder einem Proxyserver zwischengespeichert wird. – leepowers

+0

Wenn Sie es vollständig ajaxifiziert haben, können Sie dann näher darauf eingehen, ob Sie Ihre POST/SESSION-Logik in jeder einzelnen Schritt-Seite belassen würden? –

2

Definitiv nicht in einem versteckten Formularfeld. Wenn der Benutzer die Seite verlässt oder die Seite speichert oder jemand die Zurück-Schaltfläche drückt, sind vollständige CC-Informationen verfügbar. Der Computer kann mit anderen geteilt werden.

Wenn Sie den CC auf Datenträger/Datenbank beibehalten, muss der CC verschlüsselt sein, andernfalls würden Sie die PCI-Anforderungen (Payment Card Industry) verletzen. Sie können die letzten 4 Ziffern im Klartext getrennt aufbewahren.

Beachten Sie, wenn Sie mit Sitzungen (aus anderen Gründen) gehen, müssen Sie auf Angriffe auf Sitzung einschließlich, aber nicht beschränkt auf Sitzungsfixierung kümmern. Eine andere Möglichkeit ist, Ihre Client-Seite so zu bearbeiten, dass die verschiedenen Schritte nur Ajax-Aufrufe sind (cc ist in js Variable nicht im Formularfeld) und verwenden Sie CSS, um verschiedene divs anzuzeigen/auszublenden - im letzten Schritt posten Sie den gesamten Informationen zu Ihrem Server.

+0

Wie unterscheidet sich die Verwendung versteckter divs von versteckten Feldern? – afilina

Verwandte Themen