sql >> Database >  >> RDS >> Mysql

Creditcardnummers opslaan in SESSION - manieren om het te omzeilen?

Bewaar de kaartgegevens op elk persistentiemedium (database, wat dan ook), maar versleutel het kaartnummer met een unieke en willekeurige sleutel die u in de sessie opslaat. Op die manier, als de sessie verloren gaat, is de sleutel dat ook - wat u genoeg tijd geeft om verlopen/verlaten gegevens op te schonen.

Zorg er ook voor dat uw sessies beschermd zijn tegen kaping. Hier zijn hardware-oplossingen voor, maar een eenvoudige in-code manier is om de sessie-ID te koppelen aan een hash van het eerste octet van het IP plus de user-agent. Niet waterdicht, maar het helpt.

Bewerken :De belangrijkste dingen om uw risico te minimaliseren, zijn ervoor te zorgen dat u die informatie zo snel mogelijk verwijdert. Direct nadat de transactie is voltooid, verwijdert u het record uit de database. U hebt ook een rollende taak nodig (bijvoorbeeld elke 5 minuten) die alle records verwijdert die ouder zijn dan uw sessietime-out (meestal 20 minuten). Ook als u een database gebruikt voor deze zeer tijdelijke gegevens, zorg ervoor dat deze niet op een geautomatiseerd back-upsysteem staan.

Nogmaals, deze oplossing is niet onfeilbaar en ik weet niet eens 100% zeker of deze voldoet aan de CC-beveiligingsvereisten. Het zou echter moeten vereisen dat een aanvaller volledige runtimecontrole over uw omgeving heeft om de CC-informatie van klanten actief te decoderen, en als een momentopname van uw database wordt gecompromitteerd (veel waarschijnlijker/gebruikelijker), kan slechts één CC tegelijk brute-forced worden gebruikt, dat is ongeveer het beste waar je op kunt hopen.



  1. MySQL AS-sleutelwoord

  2. Een if-voorwaarde gebruiken in een SQL Server-insert

  3. Best practice meertalige website

  4. Verbinding maken met MySQL-gegevensbron in PHPStorm