Integration security guide
Garantiza el cumplimiento de la normativa PCI y protege las comunicaciones entre el cliente y el servidor.
Todos los involucrados en el procesamiento, la transmisión o el almacenamiento de los datos de tarjeta deben cumplir con las Normas de seguridad de datos de la industria de tarjetas de pago (PCI DSS). Stripe ha sido auditado por un asesor de seguridad certificado (QSA) para PCI independiente y está certificado como Proveedor de servicios PCI de nivel 1, que es el nivel de certificación más exigente dentro de la industria de pagos.
El cumplimiento de la normativa PCI es una responsabilidad compartida y se aplica tanto a Stripe como a tu empresa. Al aceptar pagos, debes hacerlo de modo de cumplir con la normativa PCI. La forma más sencilla de cumplir con esta normativa es no ver los datos de las tarjetas, ni tener acceso a ellos, en ningún momento. Con Stripe, esto es fácil porque nos encargamos de la dura tarea de proteger los datos de las tarjetas de tus clientes. Puedes simplificar el cumplimiento de esta normativa en la medida que:
- Usa una de nuestras integraciones de pago recomendadas para recopilar los datos de pagos y transmitirlos en modo seguro directamente a Stripe sin que pasen por tus servidores.
- Opera tus páginas de pago en forma segura con el protocolo de seguridad de la capa de transporte (TLS) para poder utilizar HTTPS.
- Revisa y valida anualmente el cumplimiento de la normativa PCI de tu cuenta.
Validar el cumplimiento de la normativa PCI
Todos los usuarios de Stripe deben validar su cumplimiento de PCI anualmente. La mayoría de los usuarios pueden hacer esto con un Cuestionario de autoevaluación (SAQ) proporcionado por el Consejo de Normas de Seguridad de la PCI. El tipo de SAQ depende de cómo integraste Stripe y cuál de los siguientes métodos utilizas para recopilar los datos de la tarjeta. Ciertos métodos pueden requerir que cargues documentación adicional relacionada con la PCI. Si es necesario, puedes subirlos al Dashboard. Si utilizas más de uno de los siguientes métodos, no es necesario cargar varios SAQ.
Si no sabes bien cómo demostrar que tu empresa cumple con la normativa PCI (por ejemplo, si un tercero creó tu integración), te sugerimos que hables con un QSA de PCI para determinar cómo validar mejor tu cumplimiento de acuerdo con las directrices actuales del Consejo de la PCI.
Requisito de cumplimiento de la normativa PCI por integración
Integración | Requisito | Recomendaciones |
---|---|---|
API directa | SAQ D | Cuando pasas la información de la tarjeta directamente a la API de Stripe, tu integración maneja directamente esos datos y debes demostrar anualmente el cumplimiento de PCI utilizando el SAQ D, el más exigente de los SAQ. Para reducir esta carga:
Además, nuestra herramienta de prevención de fraude, Radar, que incluye la evaluación de riesgos y las reglas, solo está disponible si usas alguno de nuestros métodos de tokenización del lado del cliente. |
Checkout or Elements | SAQ A | Checkout y Stripe.js y Elements alojan todas las entradas de recolección de datos de la tarjeta dentro de un iframe enviado desde el dominio de Stripe (no el tuyo) para que la información de las tarjetas de tus clientes nunca entre en contacto con tus servidores. Debido a esto, tienes la carga de cumplimiento de la normativa PCI más liviana. |
Connect | SAQ A | Si recopilas datos de tarjetas exclusivamente a través de una plataforma Connect (por ejemplo, Squarespace), podemos determinar si la plataforma proporciona la documentación necesaria relacionada con la PCI. |
Dashboard | SAQ C-VT | Los pagos manuales con tarjeta a través del Dashboard son posibles solo por circunstancias excepcionales, no por el procesamiento de pagos de rutina. Proporciona un formulario de pago o una aplicación móvil adecuados para que tus clientes ingresen la información de su tarjeta. No podemos verificar que la información de la tarjeta ingresada manualmente esté segura fuera de Stripe, por lo que debes proteger los datos de la tarjeta de acuerdo con los requisitos de cumplimiento de la normativa PCI y completar el SAQ C-VT anualmente para demostrar que tu empresa cumple con la PCI. |
SDK para móviles | SAQ A | El desarrollo y control de cambios del SDK móvil de Stripe cumple con PCI DSS (requisitos 6.3-6.5) y se implementa a través de nuestros sistemas validados por PCI. Cuando solo usas componentes de interfaz de usuario (IU) de nuestros SDK oficiales para iOS o Android, o creas un formulario de pago con Elements en un WebView, los números de tarjeta pasan directamente de tus clientes a Stripe, por lo que tienes la menor carga de cumplimiento de la normativa PCI. Si lo haces de otra manera y, por ejemplo, desarrollas tu propio código para gestionar los datos de tarjeta, es posible que seas responsable de cumplir con requisitos adicionales de la PCI DSS (6.3 - 6.5) y que no seas elegible para el formulario SAQ A. En este caso, te sugerimos que te comuniques con un asesor de seguridad PCI calificado (QSA) para determinar la mejor manera de validar tu cumplimiento conforme a las directrices actuales del Consejo de la PCI. Si su solicitud está pensada para que tus clientes ingresen su información en sus propios dispositivos, entonces calificas para el formulario SAQ A. Si tu aplicación acepta datos de tarjetas para varios clientes en tu dispositivo (por ejemplo, una aplicación de punto de venta), consulta a un asesor de seguridad PCI para saber cómo validar mejor tu cumplimiento de la normativa PCI. |
Stripe.js v2 | SAQ A-EP | El uso de Stripe.js v2 para pasar los datos de la tarjeta introducidos en un formulario alojado en tu propio sitio requiere completar el SAQ A-EP anualmente para demostrar que tu empresa cumple con la normativa PCI. Alternativamente, tanto Checkout como Elements te permiten la flexibilidad y personalización de un formulario autoalojado, al tiempo que cumplen con los requisitos de PCI para el SAQ A. |
Terminal | SAQ C | Si recopilas exclusivamente los datos de la tarjeta a través de Stripe Terminal, puedes realizar la validación con SAQ C. Si se integra con Stripe con métodos adicionales enumerados en esta tabla, deberás demostrar por separado que cumplen con la normativa, tal y como se describe. |
Advertencia
Si procesas más de 6 millones de transacciones por año con Visa o Mastercard, o más de 2.5 millones de transacciones con American Express o, por alguna otra razón, cualquiera de las redes de tarjetas te considera un proveedor de nivel 1, no puedes usar un formulario SAQ para probar el cumplimiento de la normativa PCI. Las marcas de tarjetas de pago exigen que completes todos los años un Informe sobre cumplimiento (ROC) para validar el cumplimiento de la normativa PCI.
Usar TLS y HTTPS
TLS es el proceso de transmisión segura de datos entre el cliente (la aplicación o el navegador que usa tu cliente) y tu servidor. En un principio, el protocolo Secure Sockets Layer (SSL) realizaba esta tarea, pero está desactualizado y ya no es seguro. TLS reemplazó a SSL, pero el término SSL continúa usándose coloquialmente cuando se refiere a TLS y su función para proteger los datos transmitidos.
Las páginas de pagos deben usar una versión reciente (TLS 1.2 o superior) porque reduce significativamente el riesgo de ataques de intermediarios tanto para ti como para tus clientes. Estos son los objetivos de TLS:
- Cifrar y verificar la integridad del tráfico entre el cliente y tu servidor.
- Verify that the client is communicating with the correct server. In practice, this usually means verifying that the owner of the domain and the owner of the server are the same entity. This helps prevent man-in-the-middle attacks. Without it, there’s no guarantee that you’re encrypting traffic to the right recipient.
Additionally, your customers are more comfortable sharing sensitive information on pages visibly served over HTTPS, which can help increase your customer conversion rate.
Puedes probar tu integración sin usar HTTPS si es necesario y habilitarlo cuando todo esté listo para aceptar cargos reales. No obstante, todas las interacciones entre tu servidor y Stripe deben usar HTTPS (es decir, al usar nuestras bibliotecas).
Set up TLS
El uso de TLS requiere un certificado digital, un archivo emitido por una autoridad de certificación (CA). La instalación de este certificado asegura al cliente que en realidad se está comunicando con el servidor con el que espera estar hablando, y no con un impostor. Debes obtener un certificado digital de un proveedor de certificadosacreditado, por ejemplo:
El costo de los certificados puede variar según el tipo de certificado y el proveedor. “Let 's Encrypt” es una autoridad de certificación que proporciona certificados en forma gratuita.
Para configurar TLS:
- Compra un certificado de un proveedor adecuado.
- Configure tu servidor para usar el certificado. Este paso puede ser complejo, así que sigue las instrucciones de la guía de instalación del proveedor que uses.
Como se trata de un conjunto complejo de herramientas de cifrado, es fácil pasar por alto algunos detalles. Te recomendamos usar la prueba de servidor SSL de Qualys SSL Labs para asegurarte de haber configurado todo de manera segura.
Security considerations
Incluir JavaScript desde otros sitios puede implicar un riesgo de seguridad, ya que tu seguridad pasará a depender de la de esos sitios. Si son víctimas de un ataque alguna vez, el atacante podrá ejecutar código arbitrario en tu página. En la práctica, muchos sitios hacen uso de JavaScript para servicios como Google Analytics, incluso en páginas seguras. Sin embargo, es algo de lo que debemos estar conscientes y, de ser posible, debemos minimizar.
Si usas webhooks, usa TLS en el punto de conexión para evitar interceptaciones en el tráfico y que se alteren las notificaciones (nunca debe incluirse información confidencial en un evento de webhook).
While complying with the Data Security Standards is important, it shouldn’t be where you stop thinking about security. Some good resources to learn about web security are:
Datos de tarjetas fuera del alcance que puedes almacenar en forma segura
Stripe envía datos de la tarjeta que no sean confidenciales en respuesta a una solicitud de cargo. Entre ellos se incluyen el tipo de tarjeta, los últimos cuatro dígitos de la tarjeta y la fecha de vencimiento. Esta información no está sujeta al cumplimiento de la normativa PCI, así que puedes almacenar cualquiera de estas propiedades en tu base de datos. También puedes almacenar todo aquello que recibas de nuestra API.
Política de seguridad de contenido
Si implementaste una Content Security Policy, este es el conjunto completo de directivas que requieren Checkout, los componentes integrados de Connect y Stripe.js: