it-swarm-eu.dev

Überzeugen Sie das Unternehmen, keine Kreditkartennummern in unserer Webanwendung zu speichern

Das Unternehmen, für das ich arbeite, benötigt ein System, mit dem Kundenkonten monatlich mit Kreditkarten belastet werden. Kunden können ihre Kreditkarteninformationen über eine in PHP geschriebene Online-Schnittstelle aktualisieren (die über HTTP über SSL angezeigt wird). Die monatlichen Gebühren werden manuell über einen kennwortgeschützten Verwaltungsbereich derselben Schnittstelle ausgeführt. Dies entspricht im Wesentlichen einem Batch-Aufruf der API von Authorize.Net.

Meine Mitarbeiter möchten die (verschlüsselten) Kreditkarteninformationen in einer MySQL-Datenbank speichern. Sie planen, die Kreditkartennummern mit PHPs mcrypt-Erweiterung zu verschlüsseln, vermutlich mit Rijndael/AES oder Twofish. Das Thema Schlüsselverwaltung wurde beschönigt, es wurden jedoch die folgenden zwei Optionen erwähnt:

  1. speichern von Schlüsseln in der Datenbank mit einem separaten Schlüssel für jeden Kreditkarteneintrag; oder

  2. speichern eines einzelnen Verschlüsselungsschlüssels für alle Kreditkarteneinträge in einer PHP Datei als Variable (ähnlich wie PHP Anwendungen wie WordPress und MediaWiki Datenbankanmeldeinformationen speichern). .

Wie kann ich sie davon überzeugen, diesen Weg nicht zu gehen? Wir werden Authorize.net für die Zahlungsabwicklung verwenden, daher habe ich ihren Customer Information Manager Service als Alternative zum Speichern erwähnt Kreditkarteninformationen selbst. Ich kenne das Thema jedoch nicht gut genug, um ein überzeugendes Argument vorzubringen (meine Argumente lauteten: "Keiner von uns ist Sicherheitsexperte" und "Ich würde mich nicht wohl fühlen, wenn ein Unternehmen meine Kreditkarteninformationen auf diese Weise speichert").

Wenn ich sie nicht überzeugen kann einen Drittanbieter-Service wie Customer Information Manager zu verwenden, was sollte ich beachten, um das Guthaben der Kunden zu erhalten Karteninformationen sicher? Wie soll ich insbesondere Verschlüsselungsschlüssel verwalten? Sollte es für jeden Kundeneintrag einen separaten Verschlüsselungsschlüssel geben? Wo kann ich die Schlüssel speichern, damit ich die Kreditkarteninformationen entschlüsseln kann, bevor ich die Transaktionen an Authorize.Net sende? Die beiden oben genannten Optionen scheinen mir nicht sehr zutreffend zu sein (aber ich kenne das Thema auch nicht gut genug, um ein überzeugendes Argument dagegen zu liefern).


pdate: Ich habe jemanden in der Firma gefunden, der mit PCI DSS-Konformität vertraut ist, daher arbeite ich mit ihm zusammen, um sicherzustellen, dass dies richtig gemacht wird. Ich würde mich dennoch über Antworten auf meine obigen Fragen freuen (sowohl um mein Wissen zu verbessern als auch um anderen in einer ähnlichen Situation zu helfen).

pdate 2: Erfolg! Ein anderer Entwickler setzte sich und las die PCI-RichtlinieDSS und entschied, dass es eine schlechte Idee ist, die Informationen schließlich selbst zu speichern. Wir werden den Customer Information Manager Service von Authorize.Net verwenden.

38
M8R-53mg86

Das Speichern von Kartennummern bedeutet, dass Sie die Anforderungen von PCI-DSS erfüllen müssen, da Sie sonst Bußgelder und Verstöße gegen Ihren Händlerkontovertrag riskieren. PCI-DSS stellt enorme Anforderungen - einige vernünftige, einige belastende, andere fragwürdige Nützlichkeit - und die Kosten für die Einhaltung und die Bestätigung, dass Sie diese eingehalten haben, können sehr hoch sein.

Laden Sie den PCI-DSS 2.0-Standard herunter und haben Sie Angst.

Insbesondere ist keiner der vorgeschlagenen Ansätze PCI-DSS-konform. Schlüssel dürfen nicht ungeschützt oder am selben Ort wie die von ihnen geschützten Karteninhaberdaten gespeichert werden.

Wenn Sie dies intern implementieren müssen, müssen Sie die Komponenten, die Kartennummern berühren, von allem anderen isolieren, damit PCI-DSS nur für eine begrenzte Anzahl von Systemen gilt. Sehen Sie sich Tokenisierungslösungen an, um die Exposition Ihrer Karteninhaberdaten auf ein Minimum zu beschränken. Wenn Sie dies nicht richtig machen, können Sie problemlos alle Ihre Server (oder sogar alle Unternehmensdesktops!) In den PCI-Bereich verschieben. An diesem Punkt wird die Einhaltung schwierig bis unmöglich.

Authorize.net bietet automatisierte Abrechnungsdienste für wiederkehrende Abrechnungen. Verwenden Sie das aus Liebe zur Vernunft.

33
bobince

"Keiner von uns ist Sicherheitsexperte" und "Ich würde mich nicht wohl fühlen, wenn ein Unternehmen meine Kreditkarteninformationen auf diese Weise speichert" sind völlig gültige Argumente. Aus technischer Sicht (in der Sache) sollten, um die Diskussion zu beenden. Wenn Sie jedoch mit Leuten streiten, die keine Sicherheitsexperten sind, sind sie möglicherweise nicht in der Lage, gute Argumente zu erkennen.

Wenn Sie also feststellen, dass das Streiten in der Sache Sie nicht weiter bringt, ziehen Sie sich zurück The Sledgehammer of Compliance (fügt Bürokraten +20 Schaden zu). Erinnern Sie sie insbesondere an PCI DSS. Fragen Sie sie, ob sie die Kosten für die Erreichung der PCI DSS -Konformität) ausgepreist haben. Fragen Sie sie nach einer Kosten-Nutzen-Analyse, wie viel zusätzlichen Umsatz diese Funktion bringen wird (normalerweise lautet die Antwort: 0) ) und wie hoch die Kosten für das Unternehmen sein werden (normalerweise lautet die Antwort: groß). In den meisten Situationen ist das Spiel vorbei.

Oder zumindest sollte es die Diskussion beenden. Wenn dies nicht der Fall ist, sprechen Sie mit Ihren Managern, da dies letztendlich eine Geschäftsentscheidung ist und sie den richtigen Anruf sehr schnell erkennen sollten.

Und wenn Ihre Manager es nicht verstehen, kann ich nur vorschlagen: neue Manager. Vielleicht ist es Zeit, Ihren Lebenslauf zu aktualisieren.

28
D.W.

Es hört sich nicht so an, als hätte Ihr Unternehmen zuvor eine PCI DSS-Bewertung vor Ort) durchlaufen oder sogar versucht, alle Fragen im SAQ D zu beantworten. Für fast jedes Unternehmen, das dies getan hat, haben sie dies getan suchen nach einer Möglichkeit, Karteninhaberdaten loszuwerden, und hoffen, dass dies nicht zu kostspielig ist. Wenn Sie an einem Punkt angelangt sind, an dem die Implementierung einer Lösung noch nicht kostspielig ist, sollten Sie Ihre Daten unbedingt mit speichern Authorize.net oder ein anderer Dritter.

Das beste Argument, das Sie Ihren Mitarbeitern vorbringen können, ist zu erklären, wie groß der Aufwand für PCI ist und wie viel dieser Aufwand reduziert wird, wenn Sie die Karteninhaberdaten nicht selbst speichern. Die Aufrechterhaltung der PCI-Konformität ist eine Vollzeitbeschäftigung. Wenn Sie Karteninhaberdaten speichern, müssen Sie so viele weitere Anforderungen erfüllen, um die Konformität aufrechtzuerhalten (die PCI DSS SAQ D ist doppelt so lang wie die SAQ C). Das Abladen der Daten erfolgt Der einfachste Weg. Ich würde ehrlich gesagt nicht einmal in Betracht ziehen, die Daten selbst zu speichern.

7
freb

Die meisten Chefs/Mitarbeiter verstehen nicht unbedingt alle "technischen" Probleme, die Sie ihnen möglicherweise stellen.

Daher müssen Sie sie in einem Bereich ansprechen, den sie perfekt verstehen können - Kosten/Geld.

Eines der Dinge, die ich nützlich finde, wenn ich dies erkläre, ist, dass wenn Sie gehackt werden und Kreditkarteninformationen gestohlen werden, diese nicht nur für Geldstrafen, sondern auch für die Kosten für die Neuausstellung einer neuen Kreditkarte haften.

Zum Beispiel: Wenn Ihr Unternehmen 100.000 Kreditkartennummern hat, würde es eine Million Dollar kosten, diese Karten zu ersetzen, bevor sie Geldstrafen usw. zahlen (oh, und übrigens, der CFO kann ins Gefängnis gehen, wenn sie nicht PCI-konform sind).

Genauso wie sie eine Versicherung für ihr Eigentum haben

4
pzirkind