Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kreditkartennummern in SESSION speichern - Möglichkeiten umzugehen?

Speichern Sie die Kartendetails auf einem beliebigen Persistenzmedium (Datenbank, was auch immer), aber verschlüsseln Sie die Kartennummer mit einem eindeutigen und zufälligen Schlüssel, den Sie in der Sitzung speichern. Auf diese Weise geht der Schlüssel auch verloren, wenn die Sitzung verloren geht - was Ihnen genügend Zeit gibt, abgelaufene/verlassene Daten zu löschen.

Stellen Sie außerdem sicher, dass Ihre Sitzungen vor Hijacking geschützt sind. Dafür gibt es Hardwarelösungen, aber eine einfache In-Code-Methode besteht darin, die Sitzungs-ID an einen Hash des ersten Oktetts der IP plus den Benutzeragenten zu binden. Nicht narrensicher, aber es hilft.

Bearbeiten :Der Schlüssel zur Minimierung Ihres Risikos besteht darin, sicherzustellen, dass Sie diese Informationen so schnell wie möglich loswerden. Löschen Sie den Datensatz direkt nach Abschluss der Transaktion aus der Datenbank. Sie benötigen außerdem einen fortlaufenden Job (z. B. alle 5 Minuten), der alle Datensätze löscht, die älter sind als Ihr Sitzungs-Timeout (normalerweise 20 Minuten). Auch, wenn Sie dafür sehr eine Datenbank verwenden temporäre Daten, vergewissern Sie sich, dass sie sich nicht auf einem automatisierten Sicherungssystem befinden.

Auch diese Lösung ist nicht narrensicher und ich bin mir nicht einmal zu 100 % sicher, dass sie den CC-Sicherheitsanforderungen entspricht. Es sollte jedoch erfordern, dass ein Angreifer die vollständige Laufzeitkontrolle über Ihre Umgebung hat, um Kunden-CC-Informationen aktiv zu entschlüsseln, und wenn ein Snapshot Ihrer Datenbank kompromittiert wird (viel wahrscheinlicher/häufiger), kann jeweils nur ein CC brutal erzwungen werden. das ist ungefähr das Beste, worauf Sie hoffen können.