criticalCWE-312A02:2021

Datos de Pago Almacenados Localmente

Guardar números de tarjeta completos, CVVs o PANs en localStorage, sessionStorage o tu propia base de datos viola PCI DSS y crea una responsabilidad masiva.

Cómo Funciona

PCI DSS (Estándar de Seguridad de Datos de la Industria de Tarjetas de Pago) prohíbe guardar CVVs después de la autorización e impone requisitos estrictos sobre el almacenamiento de números de tarjeta. Guardar datos de tarjeta en localStorage es especialmente peligroso — cualquier JavaScript en tu página (incluyendo scripts de terceros) puede leerlo.

Código Vulnerable
// MAL: guardando datos de tarjeta en almacenamiento del cliente o tu propia DB
localStorage.setItem('tarjetaGuardada', JSON.stringify({
  numero: '4111111111111111',
  cvv: '123',
  expiracion: '12/25'
}));
// También es malo: guardar números de tarjeta completos en tu base de datos
Código Seguro
// BIEN: usa Stripe Elements — los datos de tarjeta nunca tocan tus servidores
import { CardElement, useStripe } from '@stripe/react-stripe-js';

// Los datos de tarjeta van directamente del navegador a Stripe
// Solo recibes un token paymentMethodId
const { paymentMethod } = await stripe.createPaymentMethod({
  type: 'card',
  card: cardElement
});
// Guarda paymentMethod.id en tu DB — no datos de tarjeta

Ejemplo Real

La brecha de Ticketmaster en 2018 expuso 40,000 tarjetas de pago en parte porque un script de chatbot de terceros tenía acceso a la página de checkout donde los datos de tarjeta estaban presentes en el DOM. El aislamiento en iframe de Stripe Elements habría prevenido esto.

Cómo Prevenirlo

  • Nunca guardes números de tarjeta, CVVs o PANs completos en ningún lugar — ni en tu DB, ni en localStorage
  • Usa Stripe Elements o Braintree hosted fields — los datos de tarjeta nunca entran en tu contexto JavaScript
  • Guarda solo el ID de cliente de Stripe y el ID del método de pago en tu base de datos
  • Si debes manejar datos de tarjeta, logra el cumplimiento PCI DSS — es costoso y complejo, usa un servicio de tokenización en su lugar

Tecnologías Afectadas

javascriptNode.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas