Lagra kortuppgifterna på valfritt beständighetsmedium (databas, vad som helst), men kryptera kortnumret med ett unikt och slumpmässigt nyckel som du lagrar i sessionen. På så sätt om sessionen går förlorad, är nyckeln det också - vilket ger dig tillräckligt med tid för att rensa ut utgångna/övergivna data.
Se också till att dina sessioner är skyddade från kapning. Det finns hårdvarulösningar för detta, men ett enkelt sätt i koden är att knyta sessions-ID till en hash av den första oktetten av IP:n plus användaragenten. Inte idiotsäker men det hjälper.
Redigera :Nyckelbitarna för att minimera din risk är att se till att du blir av med den informationen så snart som möjligt. Direkt efter att transaktionen har gått igenom, radera posten från databasen. Du behöver också ett rullande jobb (säg var 5:e minut) som raderar alla poster som är äldre än din sessionstimeout (vanligtvis 20 minuter). Dessutom, om du använder en databas för detta mycket tillfälliga data, se till att de inte finns på ett automatiskt säkerhetskopieringssystem.
Återigen, den här lösningen är inte idiotsäker och jag är inte ens 100% säker på att den är kompatibel med CC-säkerhetskraven. Det bör dock kräva att en angripare har total körtidskontroll över din miljö för att aktivt dekryptera kund-CC-information, och om en ögonblicksbild av din databas äventyras (mycket mer sannolikt/vanligt), kan bara en CC brute-forced åt gången, vilket är ungefär det bästa du kan hoppas på.