Sto tentando di configurare una rete di applicazioni Web che forniscono tutti un qualche tipo di sistema di acquisto. Per evitare di dover eseguire scansioni di vulnerabilità su ogni server di applicazioni Web, vorrei invece assegnare a ogni applicazione Web un valore di token creato su un server di elaborazione dei pagamenti, che sarebbe l'unico server compatibile PCI sulla rete.
L'applicazione web invierà quindi questo token al server di elaborazione dei pagamenti, dove verrà quindi decrittografato e addebitato.
Vorrei anche non memorizzare i dettagli della carta sul server di elaborazione dei pagamenti, quindi il mio processo proposto è il seguente:
-
Il client dell'applicazione Web (SPA) raccoglie i dettagli della carta e inoltra una richiesta per un token crittografato direttamente al server di elaborazione dei pagamenti.
{ "number": "4242424242424242", "exp_month": "12", "exp_year": "2018", "cvv": "123" }
-
Il server di elaborazione dei pagamenti crittografa questi dati (ad esempio, usiamo AES256 e password "test") e restituisce il token al client dell'applicazione Web.
{ "token": "DmR7/sQW7+EqKc1MvdaMgQ/DPVNIJuGTpoe2uwEfA4UJTdcaXuf63GhLyTvfihK77iTknNQArUHRVhm7kdET1KjetIg7Qj/aImlPXqM6GzwlgVljoofxtuHa8rRkU4/TqKHC+mfabYQrs4E+eb39qIeIenosPTr2b/+I+IOSZ6s=" }
-
Il client dell'applicazione Web invia quindi questo token al server di applicazioni Web, insieme alle informazioni sull'ordine.
{ "token": "DmR7/sQW7+EqKc1MvdaMgQ/DPVNIJuGTpoe2uwEfA4UJTdcaXuf63GhLyTvfihK77iTknNQArUHRVhm7kdET1KjetIg7Qj/aImlPXqM6GzwlgVljoofxtuHa8rRkU4/TqKHC+mfabYQrs4E+eb39qIeIenosPTr2b/+I+IOSZ6s=", "items": [ { "id": 5, "quantity": 1 } ] }
-
Il server di applicazioni Web riceve i dettagli dell'ordine e quindi richiede un pagamento attraverso il server di elaborazione dei pagamenti.
{ "token": "DmR7/sQW7+EqKc1MvdaMgQ/DPVNIJuGTpoe2uwEfA4UJTdcaXuf63GhLyTvfihK77iTknNQArUHRVhm7kdET1KjetIg7Qj/aImlPXqM6GzwlgVljoofxtuHa8rRkU4/TqKHC+mfabYQrs4E+eb39qIeIenosPTr2b/+I+IOSZ6s=", "provider": "stripe", "currency": "aud", "price": 123.45 }
-
Il server di elaborazione dei pagamenti decodifica quindi il token per scoprire i dettagli della carta da addebitare e procede con l'addebito. Il server di elaborazione dei pagamenti ritorna indietro se l'addebito è andato a buon fine e il server di applicazioni Web è quindi libero di contrassegnare l'ordine come elaborato.
In questo scenario la mia preoccupazione principale è se passare i dettagli della carta crittografata al server di applicazioni Web è considerato un problema per la conformità PCI?
Sono consapevole che potrei utilizzare un servizio come Stripe.js per recuperare un token stupido (letteralmente solo un riferimento a Stripe, nessun dato relativo alla carta) tuttavia il sistema di elaborazione dei pagamenti potrebbe supportare più provider, alcuni dei quali potrebbero non disporre di sistemi di tokenizzazione e quindi ho bisogno di coprire tutte le basi qui.
Grazie.