Ho implementato qualcosa di molto simile a ciò che descrivi. Ogni volta che l'utente desiderava finanziare il proprio account, aveva la possibilità di fornire un numero di carta di credito o, se applicabile, riutilizzare l'ultima carta di credito.
In questa implementazione, ho appena memorizzato le ultime quattro cifre della scheda "predefinita" su Stripe localmente, nella mia tabella di database. Durante la creazione del modulo di iscrizione con carta di credito, il server ha cercato questo valore memorizzato e, se presente, il server ha restituito una casella di controllo al browser, etichettato come "Usa carta di credito XXXX XXXX XXXX 1234". Se l'utente ha selezionato la casella, il mio codice invierà una transazione a Stripe che indica che la scheda predefinita deve essere utilizzata.
Tre fattori mi hanno portato a questo progetto:
1) Volevamo essere in grado di elencare le transazioni di finanziamento (sia riuscite che fallite) per i nostri utenti. Queste schede dovevano mostrare le ultime quattro cifre del numero della carta di credito, per fornire all'utente le necessarie informazioni contestuali su ogni tentativo di finanziamento. Forse avremmo potuto interrogare la transazione Stripe per transazione durante la creazione di questo elenco per l'utente, ma questo sembra un sacco di avanti e indietro. Quindi volevamo davvero memorizzare "ultime quattro cifre" comunque.
2) Memorizzare le ultime 4 cifre della carta di credito non sembrava un grosso rischio per la sicurezza. È consuetudine mostrare le ultime 4 cifre in situazioni meno sicure. Quindi, mentre non volevamo memorizzare i numeri completi delle carte di credito nel database, pensavamo che memorizzare le ultime 4 cifre di alcune carte fosse accettabile.
3) Era semplice. Non era necessario gestire un elenco di numeri di tessera per ciascun utente, ma la stragrande maggioranza dei casi d'uso per qualcosa del genere erano (a mio avviso) comunque indirizzati.
Presumibilmente, se qualcuno ha ricevuto le ultime 4 cifre dal nostro database e quindi ha intercettato il traffico Stripe dal nostro sito, potrebbe avere una sorta di vantaggio sulla decrittografia di questo traffico. Ma questo è un rischio molto più piccolo di quello che sarebbe la memorizzazione di carte di credito reali.