2009-09-28 14 views
20

Mögliche Duplikate:Speichern von Teilkreditkartennummern

  1. Best practices for taking and storing credit card information with PHP
  2. Storing credit card details
  3. Storing Credit Card Information

Ich brauche in einer E-Commerce-Website Kreditkartennummern zu speichern. Ich habe nicht die Absicht, die gesamte Kreditkartennummer zu speichern, da dies sehr riskant wäre. Ich möchte mindestens die ersten fünf Ziffern speichern, damit ich später das Finanzinstitut identifizieren kann, das die Karte ausgestellt hat. Idealerweise möchte ich so viel von der Kreditnummer speichern, wie ich sicher kann, um zukünftige Querverweise usw. zu unterstützen.

Wie viele Ziffern und welche Ziffern kann ich sicher speichern?

Zum Beispiel stelle ich mir nicht sicher wäre genug:

5555 5555 555* 4444 

Da Sie die fehlende Ziffer berechnen konnte.

In ähnlicher Weise wäre dies sicher zu gehen, aber nicht so nützlich sein:

5555 5*** **** **** 

Gibt es ein gut akzeptierten Muster teilweise Kreditkartennummern zum Speicher?

+0

Die letzten 4 Ziffern sollten in Ordnung sein. Aber überprüfe die möglichen doppelten Fragen, die ich hinzugefügt habe. – Shoban

Antwort

38

Der Zahlungskartendatensicherheitsstandard besagt, dass Sie, wenn Sie Karteninhaberdaten bearbeiten, den Beschränkungen des PCI DSS unterliegen (was sehr umfangreich ist und eine Herausforderung darstellt). Wenn Sie einen Teil einer Kartennummer speichern möchten und nicht mit dem Standard umgehen möchten, müssen Sie sicherstellen, dass Sie: a) Sie speichern NO MORE THAN the first 6 and last 4 digits; b) Sie speichern, verarbeiten oder übermitteln niemals mehr als das. Das bedeutet, dass die Kürzung durchgeführt werden muss, bevor die Daten in Ihre Kontrolle gelangen.

Angesichts der Tatsache, dass Sie über eine E-Commerce-Website sprechen, denke ich, dass Sie früher oder später mit dem PCI DSS umgehen müssen (da Sie keine Transaktionen verarbeiten können, wenn Sie keine vollständigen PANs verwenden). Realistisch sollten Sie daher vermeiden, mehr als die ersten 6 und die letzten 4 Ziffern eines PAN zu speichern; Der Standard kümmert sich dann nicht um diese Daten, und Sie können sie in jeder Form speichern, die Sie für richtig halten. Wenn Sie zum Beispiel die ersten 7 Ziffern speichern, wird die Anforderung 3 des Standards aktiviert (und Sie müssen die Schlüsselverwaltung für die Verschlüsselung wirklich verstehen).

Ich hoffe, dass dies von Nutzen ist.

+2

Hat jemand irgendwelche tatsächliche Referenzen dafür? z.B. "Der Standard kümmert sich dann nicht um diese Daten" ... – Kzqai

+1

BK ist richtig - hier ist die offizielle PCI-Antwort: http://selfservice.kb.net/article.aspx?article=9488&p=81 – chrishiestand

+0

@chrishiestand , scheint, dass die Verbindung abgelaufen ist, sollte es groß sein, wenn Sie eine Möglichkeit haben, diese Antwort wieder zu finden ... – T30

1

Das akzeptierte Muster ist, sie überhaupt nicht zu speichern.

In bestimmten Rechtsordnungen können Sie das Gesetz verletzen, indem Sie sie oder irgendeinen Teil von ihnen speichern.

Sie können stattdessen einen einseitigen (und daher nicht wiederherstellbaren) Hash der Kreditkartennummer speichern.

+0

Der One-Way-Hash ist keine schlechte Idee. Dadurch kann ich feststellen, ob zwei Kreditkartennummern identisch sind. Danke für die Idee! Ich möchte aber auch noch eine Teilnummer speichern. Aber vielleicht reichen die ersten fünf Ziffern sowie ein Hash. – Joel

+12

Ich stimme in allen Punkten nicht überein. Die Speicherung von Kartendaten ist nicht illegal. Die Anforderungen für die sichere Lagerung und Verarbeitung werden von der Kartenindustrie geregelt. Die PCI/DSS-Anforderungen sind online verfügbar und gelten für Sie, unabhängig davon, ob Sie die Daten speichern oder nicht! Die Verwendung eines Hash-Algorithmus allein in diesem Fall ist in der Regel höher als gefährlich angesichts niedriger Entropie der Kartennummern und Deckungsblockgröße Wiederherstellung der ursprünglichen Zahl wäre ziemlich einfach mit vorberechneten Tabellen und anderen Brute-Force-Techniken zu erreichen. – Einstein

+0

Sie könnten einen statischen Salzwert hinzufügen, der die Brute-Force etwas schwerer macht. Aber ich denke du hast Recht. Ich muss das überdenken. Wenn der Hash-Raum kleiner als die Anzahl der Kreditkarten wäre, könnte dies das Brute-Force-Problem verhindern, aber dann ist es weniger nützlich, weil verschiedene Karten den gleichen Hash haben könnten. Vielleicht werde ich die Hash-Idee fallen lassen. – Joel

3

Wenn Sie nicht die gesamte Kreditkartennummer speichern müssen, warum müssen Sie sie überhaupt speichern? Wenn Sie das Finanzinstitut, das die Karte ausgestellt hat, speichern möchten, warum lagern Sie nicht das Finanzinstitut ein, das die Karte ausgestellt hat?

+4

Als Benutzer ist es nützlich für mich zu sehen, welche Karte für eine bestimmte Transaktion verwendet wird. Ich kann feststellen, ob eine Website immer noch meine alte Nummer auf einer verlorenen und stornierten Karte verwendet oder ob sie meine neue Karte verwendet. –

0

Hier in Kanada ist der übliche Weg, die ersten 4 Ziffern zu speichern (um das Finanzinstitut zu identifizieren) und die 4 letzten Ziffern, um die Kreditkarte zu identifizieren.

Aber seien Sie sicher, dass Sie keine Gesetze gebrochen haben.

1

Die Kreditkartenunternehmen haben einen Standard dafür. Sie werden es wahrscheinlich irgendwo in den Nutzungsbedingungen Ihres Zahlungsprozessors finden, dass Sie diesen Standard befolgen. Es beantwortet Ihre Fragen. Sie können die Standard-here

4

März 2013 bearbeiten finden:
Eine sehr relevante Ressource ist die PCI Security Standards Council, eine Organisation im Jahr 2006 von fünf der größten globalen Kreditkarte Marken gegründet (AmEx, Visa, Mastercard, JCB International und Discovery) und die De-facto-Autorität in Sicherheitsfragen für die Payment Card Industry (PCI) ist.
Diese Organisation veröffentlicht insbesondere die PCI Data Security Standard, derzeit in der Version 2.0 Ausgabe, die Themen wie die Verwaltung von vollständigen oder teilweisen Kreditkartennummern behandelt.Dieses Dokument ist frei verfügbar, erfordert jedoch eine einfache Registrierung und Bestätigung der Lizenzbedingungen.

Folgendes ist das Original, c. 2009 Antwort, größtenteils korrekt aber apokryph.
Eine gängige Praxis (ob legal oder nicht, weiß ich nicht) ist Speichern Sie die letzten 4 Ziffern, da dies verwendet werden kann, um dem Kunden zu bestätigen, welche seiner Kreditkarten für eine bestimmte Transaktion verwendet wurden.

, ohne die Wahrscheinlichkeit einer bösartigen Person verbessert die vollständige Nummer zu erraten, kann man speichert die ersten 4-stellige s, die von dem Finanzinstitut repräsentativ sind, die die Karte ausgestellt hat, wie in der Frage erwähnt.

nicht, viele mehr Stellen als diese 8 Ziffern speichern, da sonst die LUHN-10 checksumgegeben, können Sie genügend Informationen zur Verfügung stellen, um die vollständige Nummer plausibler zu machen erraten (wenn noch relativ hart, auch mit Einsicht aus der Serie verwendet durch einen bestimmten Emittenten, in einem bestimmten Zeitraum, aber man sollte vorsichtig sein ...)

Um diese Sache technisch und rechtlich sicherer zu machen, können Sie nur solche Informationen speichern, wenn der Kunde es ausdrücklich erlaubt . Sie sollten auch in Betracht ziehen, diese Informationen mit einen einfachen Hash für die Speicherung in der Datenbank zu maskieren.

Auch, was Sie nach einer bestimmten Transaktion speichern können/sollten, ist die Transaktions-ID, die vom Kreditkarten-Prozessor zum Zeitpunkt der Übersendung der Transaktion zur Verfügung gestellt wird. Diese ID ist der Schlüssel, der es ermöglicht, die meisten (alle?) Informationen zu finden, die Sie sogar benötigen würden, wenn es bei einer bestimmten Transaktion ein Problem geben würde. Diese Art von Informationen kann in der Regel von einer sicheren Website, die von der Verarbeitungsfirma verwaltet wird, zusammen mit einigen zusammengefassten Berichten abgefragt werden, die eine Gruppierung nach Kartentyp (Amex, Visa ...) enthalten, wenn Sie deshalb über das Speichern nachdenken die ersten vier.

1

Ihre spezifische Frage wird in Abschnitt 3.3 des PCI/DSS-Dokuments beantwortet. Die ersten sechs und letzten vier sind maximal für die Anzeige. Kundenbelege (Papier?) Sind restriktiver. Diejenigen, die ein legitimes Wissen haben müssen, können vollständige Kartendaten sehen.

Ich empfehle Ihnen, sich an Ihren Händler zu wenden und zu sehen, welche Möglichkeiten Ihnen zur Verfügung stehen.Einige der modernen Transaktions-Gateways verfügen über "Tresor" -Funktionen, bei denen vertrauliche Informationen beim Anbieter gespeichert werden und Sie Kunden einfach mit einer Token-Nummer referenzieren, wenn Sie diese abrechnen oder Kontoinformationen prüfen möchten.

Entlang der gleichen Linien kann die Verwendung von transaktionsspezifischen Tokens verwendet werden, um benötigte Daten zu referenzieren, die auf dem Providersystem gespeichert sind.

Allerdings kann ich nicht genug betonen, wie wichtig es ist, PCI DSS zu lesen und zu verstehen. Einfaches Stauen von sicherem Speicher verhindert nicht, dass Sie den PCI-Compliance-Anforderungen unterliegen !! Dies ist nur möglich, wenn Ihr System niemals die vollständigen Kartendaten berührt.

+2

"Lesen und Verstehen PCI DSS." Ja viel Glück damit. :) Ehrlich gesagt, sobald Kreditkartenunternehmen beginnen, dies streng durchzusetzen, wird jeder Entwickler Zugang zu einem Experten, wahrscheinlich in einer rechtlichen Eigenschaft, benötigen, um sicherzustellen, dass seine Software und Hardware den Standards entspricht. Es wurde definitiv nicht für den durchschnittlichen Computerprogrammierer geschrieben, um zu verstehen. –