Przechowuj dane karty na dowolnym nośniku trwałości (baza danych, cokolwiek), ale zaszyfruj numer karty za pomocą unikalnego i losowego klucz, który przechowujesz w sesji. W ten sposób, jeśli sesja zostanie utracona, klucz też jest - co daje wystarczająco dużo czasu na wyczyszczenie wygasłych/porzuconych danych.
Upewnij się również, że Twoje sesje są chronione przed przejęciem. Istnieją na to rozwiązania sprzętowe, ale prostym sposobem w kodzie jest powiązanie identyfikatora sesji z hashem pierwszego oktetu adresu IP oraz agenta użytkownika. Nie jest niezawodny, ale pomaga.
Edytuj :Kluczem do zminimalizowania ryzyka jest jak najszybsze pozbycie się tych informacji. Zaraz po zakończeniu transakcji usuń rekord z bazy danych. Potrzebujesz również zadania kroczącego (powiedzmy co 5 minut), które usuwa wszelkie rekordy starsze niż limit czasu sesji (zwykle 20 minut). Ponadto, jeśli używasz bazy danych do tego bardzo dane tymczasowe, upewnij się, że nie znajdują się one w automatycznym systemie tworzenia kopii zapasowych.
Ponownie, to rozwiązanie nie jest niezawodne i nie jestem nawet w 100% pewien, że jest zgodne z wymogami bezpieczeństwa CC. Powinno to jednak wymagać od atakującego pełnej kontroli środowiska uruchomieniowego w celu aktywnego odszyfrowania informacji o CC klienta, a jeśli migawka Twojej bazy danych zostanie naruszona (bardziej prawdopodobna/powszechna), tylko jeden CC może być w danym momencie wymuszany brute, co jest najlepszym, na co możesz liczyć.