sql >> Database teknologi >  >> RDS >> Mysql

Lagring af kreditkortnumre i SESSION - måder omkring det?

Gem kortoplysningerne på ethvert persistensmedium (database, uanset hvad), men krypter kortnummeret med et unikt og tilfældigt nøgle, som du gemmer i sessionen. På den måde, hvis sessionen går tabt, er nøglen det også - hvilket giver dig tid nok til at rense udløbne/forladte data.

Sørg også for, at dine sessioner er beskyttet mod kapring. Der er hardwareløsninger til dette, men en simpel måde i kode er at binde sessions-id'et til en hash af den første oktet af IP'en plus brugeragenten. Ikke idiotsikker, men det hjælper.

Rediger :Nøglen til at minimere din risiko er at sikre, at du slipper af med den information så hurtigt som muligt. Lige efter at transaktionen er gået igennem, skal du slette posten fra databasen. Du har også brug for et rullende job (f.eks. hvert 5. minut), der sletter alle poster, der er ældre end din sessionstimeout (normalt 20 minutter). Også, hvis du bruger en database til dette meget midlertidige data, sørg for, at de ikke er på et automatiseret backup-system.

Igen er denne løsning ikke idiotsikker, og jeg er ikke engang 100% sikker på, at den er i overensstemmelse med CC sikkerhedskrav. Det burde dog kræve, at en angriber har total runtime-kontrol over dit miljø for aktivt at dekryptere kunde-CC-oplysninger, og hvis et øjebliksbillede af din database er kompromitteret (meget mere sandsynligt/almindelig), kan kun én CC blive brute-forced ad gangen, hvilket er det bedste, du kan håbe på.



  1. Direkte adgang til en SQL Server-database i Xamarin.Forms

  2. MySQL - tæl efter måned (inklusive manglende poster)

  3. Forsøger at installere Perl-Mysql DBD, mysql_config kan ikke findes

  4. Vælg punkter fra kortdatabasen efter radius