it-swarm.dev

Convinci l'azienda a non memorizzare i numeri di carta di credito nella nostra webapp

La società per cui lavoro ha bisogno di un sistema per eseguire addebiti mensili con carta di credito sui conti dei clienti. I clienti saranno in grado di aggiornare i dati della propria carta di credito da un'interfaccia online scritta in PHP (che verrà presentato tramite HTTP su SSL). I costi mensili verranno eseguiti manualmente tramite un amministratore protetto da password area della stessa interfaccia, che equivarrà sostanzialmente a una chiamata batch all'API di Authorize.Net.

I miei colleghi vogliono archiviare le informazioni (crittografate) sulla carta di credito in un database MySQL. Hanno in programma di crittografare i numeri di carta di credito con estensione mcrypt di PHP , presumibilmente usando Rijndael/AES o Twofish. L'argomento della gestione delle chiavi è stato chiarito, ma sono state menzionate le seguenti due opzioni:

  1. memorizzazione delle chiavi nel database, con una chiave separata per ciascuna voce della carta di credito; o

  2. memorizzazione di una singola chiave di crittografia per tutte le voci della carta di credito in un file PHP come variabile (simile a how PHP come WordPress e credenziali del database del negozio MediaWiki).

Come posso convincerli a non seguire questa strada? Utilizzeremo Authorize.net per l'elaborazione dei pagamenti, quindi ho menzionato il loro servizio Customer Information Manager in alternativa alla memorizzazione dei dati della carta di credito. Tuttavia, non conosco abbastanza bene l'argomento per formulare un argomento convincente (le mie argomentazioni erano "nessuno di noi è un esperto di sicurezza" e "Non mi sentirei a mio agio con un'azienda che conserva i dati della mia carta di credito in questo modo").

Se non riesco a convincerli a utilizzare un servizio di terze parti come Customer Information Manager, cosa devo tenere mente per proteggere le informazioni della carta di credito dei clienti? In particolare, come devo gestire le chiavi di crittografia? Dovrebbe esserci una chiave di crittografia separata per ogni voce del cliente? Dove posso archiviare le chiavi in ​​modo da poter decrittografare i dati della carta di credito prima di inviare le transazioni su Authorize.Net? Le due opzioni sopra menzionate non mi sembrano molto valide (ma, ancora una volta, non conosco l'argomento abbastanza bene da fare una discussione convincente contro nessuno dei due).


Aggiornamento : ho trovato qualcuno nell'azienda familiare con PCI DSS, quindi sto lavorando con lui per creare certo che questo verrà fatto bene, tuttavia, apprezzerei comunque le risposte alle mie domande sopra (sia per migliorare le mie conoscenze sia per aiutare gli altri in una situazione simile).

Aggiornamento 2 : successo! Un altro sviluppatore si è seduto e ha letto il PCI DSS e ha deciso che è una cattiva idea archiviare le informazioni noi stessi dopo tutto. Utilizzeremo Authorize.Net's Customer Information Manager servizio.

38
M8R-53mg86

Memorizzare i numeri delle carte significa che è necessario rispettare i requisiti PCI-DSS, oppure si rischiano multe e violazione del contratto del conto commerciante. PCI-DSS ha una serie enorme di requisiti - alcuni sensati, alcuni onerosi, alcuni di discutibile utilità - e il costo per rispettarlo e certificare di averlo rispettato, può essere molto elevato.

Scarica lo standard PCI-DSS 2. e abbi paura.

In particolare, nessuno degli approcci suggeriti è conforme PCI-DSS. Le chiavi non devono essere archiviate non protette o nello stesso posto dei dati dei titolari di carta che proteggono.

Se è necessario implementarlo internamente, è necessario isolare i componenti che toccano i numeri delle carte da tutto il resto, in modo che PCI-DSS si applichi solo a un numero limitato di sistemi. Guarda le soluzioni di tokenizzazione per aiutarti a ridurre al minimo l'esposizione dei dati dei titolari di carta. Se non lo fai nel modo giusto, puoi facilmente rilasciare tutti i tuoi server (o anche tutti i tuoi desktop aziendali!) Nell'ambito PCI, a quel punto la conformità diventa difficile-impossibile.

Authorize.net offre servizi di fatturazione ricorrenti automatizzati. Per amore del buonsenso, usalo.

33
bobince

"Nessuno di noi è un esperto di sicurezza" e "Non mi sentirei a mio agio con un'azienda che conserva i dati della mia carta di credito in questo modo" sono argomenti completamente validi. Da un punto di vista tecnico (nel merito), dovrebbe per terminare la discussione. Ma se stai litigando con persone che non sono esperti di sicurezza, potrebbero non essere in grado di riconoscere buoni argomenti.

Quindi, se scopri che discutere sul merito non ti porta da nessuna parte, estrai The Sledgehammer of Compliance (infligge +20 danni ai burocrati). In particolare, ricordare loro PCI DSS. Chiedi loro se hanno valutato il costo per raggiungere PCI DSS. Richiedi loro un'analisi costi-benefici di quante entrate aggiuntive fornirà questa funzionalità (di solito, la risposta è: 0 ) e quanto sarà il costo per l'azienda (di solito, la risposta è: grande). Nella maggior parte dei casi, il gioco sarà finito.

O almeno dovrebbe finire la discussione. In caso contrario, parla con i tuoi manager, in quanto questa è in definitiva una decisione aziendale e dovrebbero riconoscere molto rapidamente la chiamata giusta.

E se i tuoi manager non lo capiscono, beh, tutto ciò che posso suggerire è: ottenere nuovi manager. Forse è il momento di aggiornare il tuo curriculum.

28
D.W.

Non sembra che la tua azienda abbia già superato una valutazione PCI DSS in loco prima o abbia persino tentato di rispondere a tutte le domande del SAQ D. Per quasi tutte le aziende che lo hanno, hanno stanno cercando un modo per sbarazzarsi dei dati dei titolari di carta e sperando che non sia troppo costoso per loro farlo. Se sei in un punto in cui non è ancora costoso implementare una soluzione, dovresti assolutamente archiviare i tuoi dati con Authorize.net o un'altra terza parte.

L'argomento migliore che puoi fare ai tuoi colleghi è quello di spiegare quanto sia grande una seccatura PCI e quanto questa seccatura è ridotta se non memorizzi tu stesso i dati dei titolari di carta. Il mantenimento della conformità PCI è un lavoro a tempo pieno. Se si memorizzano i dati dei titolari di carta, ci sono molti altri requisiti che è necessario soddisfare per mantenere la conformità (PCI DSS SAQ D è il doppio del SAQ C). Lo scarico dei dati è il modo più semplice di procedere. Onestamente non prenderei nemmeno in considerazione l'archiviazione dei dati.

7
freb

La maggior parte dei capi/colleghi non necessariamente comprende tutti i problemi "tecnici" che potresti presentare.

Pertanto è necessario indirizzarli in un'area che possano comprendere perfettamente: costo/denaro.

Una delle cose che trovo utili per spiegare questo è che se dovessi essere violato e le informazioni sulla carta di credito vengono rubate, saranno responsabili, non solo per le multe, ma anche per il costo della riemissione di una nuova carta di credito.

Ad esempio: se la tua azienda ha 100.000 numeri di carta di credito, costerebbe un milione di dollari per la sostituzione di quelle carte PRIMA che paghino multe ecc. (Oh e comunque il CFO può andare in galera se non fossero conformi PCI)

Proprio come hanno un'assicurazione per la loro proprietà

4
pzirkind