Guida alla sicurezza dell'integrazione
Come assicurare la conformità alle norme PCI e delle comunicazioni sicure tra il cliente e il server.
Chiunque sia coinvolto nell’elaborazione, trasmissione o archiviazione dei dati delle carte deve soddisfare lo standard PCI DSS (Payment Card Industry Data Security Standards). Stripe è stata verificata da un QSA (Qualified Security Assessor) PCI indipendente ed è certificata come fornitore di servizi PCI di livello 1. Si tratta del livello di certificazione più rigoroso disponibile nel settore dei pagamenti.
La conformità alle norme PCI è una responsabilità condivisa e si applica sia a Stripe che alla tua attività. Quando si accettano pagamenti, è necessario procedere in modo conforme alle norme PCI. Il modo più semplice per garantire la conformità PCI consiste nell’impedire la visualizzazione o l’accesso ai dati delle carte. Stripe rende questo compito più semplice perché può farsi carico del lavoro più gravoso per la protezione delle informazioni relative alle carte di credito dei tuoi clienti. Per semplificare gli adempimenti alle norme PCI, puoi:
- Usare una delle integrazioni di pagamento consigliate per raccogliere le informazioni di pagamento, che vengono così trasmesse direttamente a Stripe senza passare per i tuoi server.
- Gestire le tue pagine di pagamento in modo sicuro usando il protocollo Transport Layer Security (TLS) in modo che utilizzino HTTPS
- Controllare e convalidare annualmente la conformità PCI del nostro account.
Convalidare la conformità alle norme PCI
Tutti gli utenti Stripe devono convalidare ogni anno la propria conformità alle norme PCI. La maggior parte degli utenti può farlo tramite un questionario di autovalutazione SAQ (Self-Assessment Questionnaire), fornito dal PCI Security Standards Council. Il tipo di SAQ dipende dalla modalità di integrazione con Stripe e dai metodi utilizzati per raccogliere i dati delle carte, tra quelli di seguito elencati. L’uso di alcuni metodi può rendere necessario il caricamento di ulteriore documentazione PCI. In questo caso, puoi caricarla dalla Dashboard. Se usi più di uno dei metodi di seguito elencati, non devi caricare più SAQ.
Se non sai come provare che la tua azienda è conforme alle norme PCI (ad esempio, stai usando un’integrazione di terze parti), ti suggeriamo di rivolgerti a un Qualified Security Assessor (QSA) PCI per determinare il modo migliore per convalidare la tua conformità secondo le linee guida correnti del PCI Council.
Requisito di conformità alle norme PCI per integrazione
Integrazione | Requisito | Consiglio |
---|---|---|
API diretta | SAQ D | Quando trasmetti i dati delle carte direttamente all’API di Stripe, la tua integrazione gestisce direttamente tali dati e ti viene richiesto di dimostrare annualmente la conformità alle norme PCI utilizzando il SAQ D, il più esigente dei SAQ. Per ridurre questo carico di lavoro:
Inoltre, il nostro strumento di prevenzione delle frodi, Radar, che include le regole e la valutazione del rischio, è disponibile solo quando si utilizza uno dei nostri metodi di tokenizzazione lato client. |
Checkout o Elements | SAQ A | Checkout e Stripe.js ed Elements ospitano tutti gli input di raccolta dei dati delle carte all’interno di un iframe gestito dal dominio di Stripe e non dal tuo: le informazioni delle carte dei clienti, quindi, non arrivano mai ai tuoi server. In questo modo, i tuoi adempimenti in termini di conformità PCI sono semplificati. |
Connect | SAQ A | Se usi soltanto una piattaforma Connect (ad esempio, Squarespace) per acquisire i dati delle carte, possiamo accertare che la piattaforma abbia fornito la necessaria documentazione PCI. |
Dashboard | SAQ C-VT | I pagamenti manuali con carta tramite la Dashboard sono possibili solo in circostanze eccezionali, non per l’elaborazione di pagamenti di routine. Fornisci ai tuoi clienti un modulo di pagamento o un’app per dispositivi mobili che siano adatti per inserire i dati delle carte. Non possiamo verificare che i dati della carta immessi manualmente vengano conservati al sicuro al di fuori di Stripe. Hai quindi la responsabilità di garantire la protezione dei dati delle carte secondo i requisiti di conformità alle norme PCI e completare il SAQ C-VT ogni anno per provare la conformità alle norme PCI della tua attività. |
SDK per dispositivi mobili | SAQ A | Lo sviluppo e il controllo delle modifiche degli SDK per dispositivi mobili di Stripe sono conformi agli standard PCI DSS (requisiti 6.3-6.5) e vengono implementati attraverso i nostri sistemi convalidati PCI. Quando utilizzi solo i componenti interfaccia utente dei nostri SDK ufficiali per iOS o Android o crei un modulo di pagamento con Elements in una WebView, i numeri delle carte passano direttamente dai tuoi clienti a Stripe. In questo modo, i tuoi adempimenti in termini di conformità PCI sono semplificati. Se procedi diversamente, ad esempio scrivendo un codice proprietario per gestire i dati delle carte, è possibile che tu debba soddisfare altri requisiti PCI DSS (6.3 - 6.5) e che tu non possa usare un SAQ A. Rivolgiti a un Qualified Security Assessor (QSA) PCI per determinare il modo migliore per convalidare la tua conformità secondo le linee guida correnti del PCI Council. Se la tua applicazione richiede ai tuoi clienti di inserire le loro informazioni sui propri dispositivi, allora soddisfi i requisiti di idoneità del SAQ A. Se la tua applicazione accetta le informazioni delle carte di più clienti sul tuo dispositivo (ad esempio, un’app per POS), consulta un QSA PCI per scoprire il modo migliore per convalidare la tua conformità alle norme PCI. |
Stripe.js v2 | SAQ A-EP | L’utilizzo di Stripe.js v2 per specificare i dati delle carte inseriti in un modulo ospitato sul tuo sito ti obbliga a completare ogni anno il SAQ A-EP per provare la conformità alle norme PCI della tua attività. In alternativa, sia Checkout che Elements ti consentono la flessibilità e la personalizzazione di un modulo in self-hosting, soddisfacendo allo stesso tempo l’idoneità PCI per il SAQ A. |
Terminal | SAQ C | Se raccogli esclusivamente i dati delle carte tramite Stripe Terminal, puoi eseguire la convalida tramite SAQ C. Se effettui l’integrazione con Stripe utilizzando altri metodi elencati in questa tabella, devi dimostrarne la conformità separatamente, come descritto. |
Avviso
Se elabori più di sei milioni di transazioni all’anno con Visa o MasterCard o più di due milioni e mezzo di transazioni con American Express, oppure sei considerato un fornitore di “Livello 1” da qualsiasi circuito di carte, non puoi utilizzare un SAQ per provare la conformità alle norme PCI. In questo caso, i circuiti di pagamento ti chiederanno di compilare ogni anno un Rapporto di conformità (RoC) per convalidare la tua conformità alle norme PCI.
Usare TLS e HTTPS
TLS si riferisce al processo di trasmissione sicura dei dati tra il client (l’app o il browser che il cliente sta usando) e il tuo server. Tale processo veniva originariamente eseguito utilizzando il protocollo SSL (Secure Sockets Layer). Questo protocollo, ormai obsoleto e non più sicuro, è stato sostituito dal TLS. Il termine SSL continua tuttavia a essere usato colloquialmente per riferirsi al TLS e alla sua funzione di protezione dei dati trasmessi.
Le pagine di pagamento devono utilizzare una versione recente (TLS 1.2 o superiore) perché consente di ridurre significativamente il rischio di attacchi man-in-the-middle sia per te che per i tuoi clienti. TLS intende realizzare quanto segue:
- Crittografare e verificare l’integrità dei dati relativi al traffico tra il client e il tuo server.
- Verificare che il client stia comunicando con il server corretto. Normalmente, ciò significa che il proprietario del dominio e il proprietario del server sono la stessa entità. Questo aiuta a evitare attacchi man-in-the-middle. Senza questa verifica, non si può garantire che il traffico venga crittografato verso il destinatario corretto.
Inoltre, i clienti sono più propensi a condividere dati sensibili su pagine che vengono gestite tramite HTTPS in modo evidente, e questo può aiutare a far crescere il tasso di conversione dei clienti.
Puoi eseguire il test della tua integrazione senza usare HTTPS e abilitarlo quando è tutto pronto per accettare addebiti in modalità live. Comunque, tutte le interazioni tra il tuo server e Stripe devono usare HTTPS (ad esempio quando usi le nostre librerie).
Configurare TLS
L’utilizzo di TLS richiede un certificato digitale, ovvero un file emesso da un’autorità di certificazione (CA, Certification Authority*). Una volta installato, il certificato assicura al client che sta realmente comunicando con il server desiderato e non con un impostore. Fatti rilasciare il certificato digitale da un fornitore di certificati serio, come:
Il costo dei certificati varia in base al tipo di certificato e di fornitore. “Let’s Encrypt” è un’autorità di certificazione che rilascia certificati gratuitamente.
Per configurare TLS:
- Acquista un certificato da un fornitore appropriato.
- Configura il tuo server per utilizzare il certificato. Questo passaggio può essere complesso, quindi segui la guida all’installazione del fornitore che utilizzi.
Dato che TLS è una complessa suite di strumenti crittografici, è facile trascurare qualche dettaglio. Per accertarsi che la configurazione sia stata completata in modo sicuro, consigliamo di utilizzare SSL Server Test di Qualys SSL Labs.
Considerazioni sulla sicurezza
Includere JavaScript da altri siti può essere un rischio per la sicurezza perché la tua sicurezza diventa dipendente dalla loro. Se quei siti dovessero essere compromessi, un utente malintenzionato potrebbe riuscire a eseguire codice arbitrario sulla tua pagina. In pratica, molti siti utilizzano JavaScript per servizi come Google Analytics, anche su pagine sicure. Tuttavia, ti consigliamo di ridurre al minimo questo rischio.
Se usi i webhook, utilizza TLS per l’endpoint, in modo da evitare che il traffico sia intercettato e le notifiche alterate (le informazioni sensibili non sono mai incluse in un evento webhook).
Quando si parla di sicurezza, non bisogna limitarsi alla conformità con gli standard di sicurezza dei dati. A tal fine, alcune risorse utili sono:
Dati della carta fuori dal campo di applicazione che puoi memorizzare in sicurezza
In risposta a una richiesta di addebito, Stripe restituisce informazioni non sensibili sulla carta, come il tipo di carta, le ultime quattro cifre e la data di scadenza. Queste informazioni non sono soggette alle norme di conformità PCI e puoi quindi memorizzarle nel tuo database. Puoi inoltre memorizzare tutto quello che ti viene restituito dalla nostra API.
Criteri di sicurezza del contenuto
Se hai implementato dei Criteri di sicurezza del contenuto, l’insieme completo delle direttive necessarie per Checkout, per i componenti incorporati di Connect e per Stripe.js comprende: