Guia de segurança de integração
Garanta a conformidade com PCI e comunicações seguras entre clientes e servidores.
Sempre que se faz processamento, transmissão ou armazenamento de dados de cartão, é obrigatório cumprir os Payment Card Industry Data Security Standards (PCI DSS). Um Avaliador de Segurança Qualificado (QSA) de PCI auditou e certificou a Stripe como Prestador de Serviços de Nível 1 do PCI. É a certificação mais rigorosa disponível no setor de pagamentos.
A conformidade com PCI é uma responsabilidade compartilhada entre a Stripe e sua empresa. Ao aceitar pagamentos, você precisa manter a conformidade com o PCI. A maneira mais simples de cumprir o PCI é nunca visualizar (ou acessar) dados de cartão. Com a Stripe, isso é fácil: fazemos a parte complicada para proteger os dados dos cartões de seus clientes. Para simplificar sua conformidade com PCI, você deve:
- Use uma das integrações de pagamento recomendadas para coletar dados de pagamento, que são transmitidos com segurança diretamente à Stripe , sem passar pelos seus servidores.
- Configure suas páginas de pagamento com segurança usando Transport Layer Security (TLS) para que elas usem HTTPS
- Revise e valide a conformidade com PCI da sua conta anualmente.
Valide sua conformidade com o PCI
Todos os usuários da Stripe devem validar a conformidade com PCI anualmente. A maioria dos usuários pode usar um Questionário de autoavaliação (SAQ) fornecido pelo PCI Security Standards Council. O tipo de SAQ depende de como você integrou a Stripe e quais dos métodos abaixo você usa para coletar dados de cartão. Determinados métodos podem exigir o carregamento de documentação PCI adicional. Se isso for necessário, você poderá fazer upload dos documentos no Dashboard. Se estiver usando mais de um dos métodos abaixo, não há necessidade de carregar vários SAQs.
Se não tiver certeza de como comprovar que sua empresa está em conformidade com PCI (por exemplo, um terceiro construiu sua integração), sugerimos que você fale com um QSA do PCI para determinar a melhor forma de validar sua conformidade de acordo com os orientações atuais do Conselho do PCI.
Requisito de conformidade com PCI por integração
integração | Requisito | Recomendação |
---|---|---|
API direta | SAQ D | Quando você passa informações de cartão diretamente para a API da Stripe, sua integração gerencia diretamente esses dados e você deve comprovar anualmente sua conformidade com PCI usando o SAQ D, o mais rigoroso dos SAQs. Para reduzir essa sobrecarga:
Além disso, nossa ferramenta de prevenção de fraudes, o Radar, que inclui avaliação de riscos e regras, está disponível somente quando um dos nossos métodos de tokenização do lado do cliente é utilizado. |
Checkout ou Elements | SAQ A | Checkout, Stripe.js e Elements hospedam toda a coleta de dados de cartão em um iframe enviado do domínio da Stripe (e não do seu), de modo que os dados de cartão dos seus clientes não passam pelos seus servidores. Por isso, sua sobrecarga de conformidade com PCI é a mínima possível. |
Connect | SAQ A | Se você coleta dados de cartões exclusivamente por uma plataforma do Connect (por exemplo, Squarespace), podemos determinar se a plataforma fornece a documentação de PCI necessária. |
Dashboard | SAQ C-VT | Pagamentos manuais com cartão pelo Dashboard são permitidos somente em circunstâncias excepcionais, não no processamento de pagamentos de rotina. Forneça um formulário de pagamento ou aplicativo móvel adequado para os clientes inserirem os dados do cartão. Não temos como verificar se os dados de cartão inseridos manualmente estão seguros fora da Stripe. Portanto, você deve proteger os dados de cartão de acordo com os requisitos de conformidade com PCI e preencher o SAQ C-VT anualmente para comprovar que sua empresa está em conformidade com PCI. |
SDK para celular | SAQ A | O desenvolvimento de SDKs para dispositivos móveis e o controle de alterações da Stripe estão em conformidade com o PCI DSS (requisitos 6.3 a 6.5) e são implementados por meio dos nossos sistemas validados por PCI. Quando você usa apenas componentes de IU dos nossos SDKs oficiais para iOS ou Android, ou cria um formulário de pagamento com o Elements em um WebView, os números de cartão são passados diretamente dos clientes para a Stripe, reduzindo sua sobrecarga de conformidade com PCI ao mínimo possível. Se seguir outro caminho, como escrever seu próprio código para gerenciar os dados dos cartões, você poderá ser responsável por requisitos adicionais do PCI DSS (6.3 a 6.5) e não se qualificará para um SAQ A. Fale com um QSA do PCI para determinar a melhor forma de validar sua conformidade de acordo com as orientações atuais do Conselho do PCI. Se o seu aplicativo exige que os clientes insiram as informações usando o próprio dispositivo, você se qualifica para SAQ A. Se o seu aplicativo aceita dados dos cartões de vários clientes no seu dispositivo (por exemplo, um aplicativo de ponto de venda), consulte um QSA do PCI para saber como validar sua conformidade com o PCI. |
Stripe.js v2 | SAQ A-EP | O uso do Stripe.js v2 para passar dados de cartão inseridos em um formulário hospedado no seu próprio site exige o preenchimento anual do SAQ A-EP para comprovar que sua empresa está em conformidade com as normas PCI. Como alternativa, o Checkout e o Elements oferecem a flexibilidade e personalização de um formulário auto-hospedados e também cumprem os requisitos de qualificação do PCI para SAQ A. |
Terminal | SAQ C | Se você coleta dados de cartões exclusivamente pelo Stripe Terminal, é possível validar usando o SAQ C. Se você faz a integração com a Stripe usando os métodos adicionais listados nesta tabela, é preciso comprovar a conformidade deles separadamente, conforme descrito. |
Aviso
Se você processa mais de 6 milhões de transações por ano com Visa ou Mastercard, ou mais de 2,5 milhões de transações com American Express, ou se for considerado provedor de Nível 1 por qualquer bandeira de cartão, não será possível usar um SAQ para comprovar conformidade com o PCI. Nesse caso, é necessário preencher um Relatório de Conformidade (RoC) anualmente para validar sua conformidade o com PCI.
Use TLS e HTTPS
TLS refere-se ao processo de transmitir dados com segurança entre o cliente (o aplicativo ou navegador que seu cliente está usando) e seu servidor. O protocolo Secure Sockets Layer (SSL) realizava isso originalmente, mas está desatualizado e não é mais seguro. O TLS substituiu o SSL, mas o termo SSL continua a ser usado coloquialmente em referência ao TLS e sua função para proteger os dados transmitidos.
As páginas de pagamento devem usar uma versão recente (TLS 1.2 ou superior), pois essa reduz significativamente o risco de ataques de man-in-the-middle para você e seus clientes. O TLS tenta realizar o seguinte:
- Criptografar e verificar a integridade do tráfego entre o cliente e o servidor.
- Verifique se o cliente está se comunicando com o servidor correto. Na prática, geralmente é preciso verificar que o proprietário do domínio e o proprietário do servidor são a mesma entidade. Isso ajuda a evitar ataques “man-in-the-middle”. Sem isso, não há garantia de que você esteja criptografando o tráfego para o destinatário correto.
Além disso, seus clientes ficam mais à vontade para compartilhar dados confidenciais em páginas visivelmente atendidas por HTTPS, o que pode ajudar a aumentar a taxa de conversão de clientes.
Você pode testar sua integração sem usar HTTPS se precisar e habilitá-la quando estiver pronto para aceitar cobranças em tempo real. No entanto, todas as interações entre seu servidor e a Stripe precisam usar HTTPS (ou seja, quando usar nossas bibliotecas).
Configurar TLS
O uso de TLS exige um certificado digital, um arquivo emitido por uma autoridade de certificação (CA). A instalação desse certificado garante ao cliente que está se comunicando com o servidor com o qual espera falar, e não com um impostor. Obtenha um certificado digital de um provedor de certificados confiável, como:
O preço dos certificados depende do tipo de certificado e provedor. “Let’s Encrypt” é uma autoridade de certificação que fornece certificados gratuitamente.
Para configurar o TLS:
- Compre um certificado de um provedor adequado.
- Configure seu servidor para usar o certificado. Como essa etapa pode ser complexa, siga o guia de instalação do provedor que você utiliza.
Como o TLS é um conjunto complexo de ferramentas de criptografia, é fácil perder alguns detalhes. Recomendamos usar o Teste de servidor SSL da Qualys SSL Labs para garantir que você configure tudo com segurança.
Considerações de segurança
A inclusão de JavaScript de outros sites torna sua segurança dependente deles e representa um risco de segurança. Se eles forem comprometidos, um invasor poderá executar códigos arbitrários em sua página. Na prática, vários sites usam JavaScript para serviços como Google Analytics, mesmo em páginas seguras. Mesmo assim, recomendamos tentar minimizar esse problema.
Se estiver usando webhooks, use TLS para o endpoint para evitar interceptação de tráfego e alteração de notificações (eventos de webhook nunca contêm informações sigilosas).
Embora a conformidade com os Padrões de Segurança de Dados seja importante, suas preocupações com a segurança não devem parar por aí. Alguns bons recursos para aprender sobre segurança na web são:
Dados de cartão fora do escopo que você pode armazenar com segurança
A Stripe retorna dados de cartão não sigilosos em resposta a uma solicitação de cobrança. Isso inclui o tipo, os quatro últimos dígitos e a data de validade do cartão. Como essas informações não estão sujeitas à conformidade com PCI, você pode armazená-las em seu banco de dados. Você também pode armazenar qualquer coisa retornada por sua API.
Política de Segurança de Conteúdo
Se você implementou uma Política de segurança de conteúdo, o conjunto completo de diretivas exigidas pelo Checkout, pelos componentes integrados do Connect e pelo Stripe.js é: