2009-09-28 18 views
20

posible duplicado:Almacenamiento de números de tarjetas de crédito parcial

  1. Best practices for taking and storing credit card information with PHP
  2. Storing credit card details
  3. Storing Credit Card Information

que necesitan almacenar números de tarjetas de crédito dentro de un sitio de comercio electrónico. No tengo la intención de almacenar el número completo de la tarjeta de crédito, ya que sería muy arriesgado. Me gustaría almacenar al menos los primeros cinco dígitos para poder identificar luego a la institución financiera que emitió la tarjeta. Idealmente, me gustaría almacenar la mayor cantidad posible del número de crédito, para ayudar a futuras referencias cruzadas, etc.

¿Cuántos dígitos, y qué dígitos en particular, puedo almacenar con seguridad?

Por ejemplo, me imagino que esto no sería lo suficientemente seguro:

5555 5555 555* 4444 

Debido a que usted podría calcular el dígito que falta.

Del mismo modo, este sería seguro, pero que no sea tan útil:

5555 5*** **** **** 

¿Hay un patrón bien aceptado para almacenar números parciales de crédito?

+0

Los últimos 4 dígitos deberían estar bien. Pero verifique las posibles preguntas duplicadas que he agregado. – Shoban

Respuesta

38

El Estándar de seguridad de datos de la tarjeta de pago indica que si está manejando datos del titular de la tarjeta, entonces está sujeto a las limitaciones del PCI DSS (que es muy completo y difícil de cumplir). Si desea almacenar parte de un número de tarjeta y no desea tener que lidiar con el Estándar, entonces necesita asegurarse de que a) almacene NO MORE THAN the first 6 and last 4 digits; b) nunca almacena, procesa o transmite más que esto. Eso significa que el truncamiento debe llevarse a cabo antes de que los datos entren en su control.

Dado que usted está hablando de un sitio de comercio electrónico, creo que tarde o temprano tendrá que lidiar con PCI DSS (ya que si no está tomando PAN completos, no puede procesar transacciones). En realidad, entonces, debe evitar almacenar más de los primeros 6 y últimos 4 dígitos de un PAN; el estándar no se "preocupa" por esta información, y puede almacenarla en la forma que mejor le parezca. Si almacena, digamos, los primeros 7 dígitos, entonces entra en juego el Requisito 3 del Estándar (y comienza a tener que comprender realmente la administración de claves en el cifrado).

Espero que esto sea útil.

+2

¿Alguien tiene alguna referencia real para esto? p.ej. "el estándar no se 'importa' con respecto a estos datos" ... – Kzqai

+1

BK es correcto: aquí está la respuesta oficial de PCI: http://selfservice.kb.net/article.aspx?article=9488&p=81 – chrishiestand

+0

@chrishiestand , parece que el enlace ha expirado, debería ser genial si tiene alguna manera de encontrar esa respuesta de nuevo ... – T30

1

El patrón aceptado es no almacenarlos en absoluto.

En ciertas jurisdicciones puede estar infringiendo la ley al almacenarlas o parte de ellas.

En su lugar, podría almacenar un hash unidireccional (y por lo tanto irrecuperable) del número de tarjeta de crédito.

+0

El hash unidireccional no es una mala idea. Me permitirá identificar si dos números de tarjeta de crédito eran iguales. ¡Gracias por la idea! Me gustaría almacenar un número parcial también, sin embargo. Pero, tal vez los primeros cinco dígitos, así como un hash sería suficiente ... – Joel

+12

No estoy de acuerdo en todos los puntos. El almacenamiento de los datos de la tarjeta no es ilegal. Los requisitos para un almacenamiento y procesamiento seguros están regidos por la industria de las tarjetas. Los requisitos de PCI/DSS están disponibles en línea y se aplican a usted ya sea que almacene los datos o no. El uso de un algoritmo hash solo en este caso generalmente es muy peligroso dada la baja entropía de los números de tarjetas y cubriendo la recuperación de tamaño de bloque del número original sería bastante fácil de lograr usando tablas precalculadas y otras técnicas de fuerza bruta. – Einstein

+0

Podría agregar un valor de sal estática que podría dificultar un poco más la fuerza bruta. Pero creo que tienes razón. Tendré que repensar esto. Si el espacio de hash fuera más pequeño que el número de tarjetas de crédito, esto podría evitar el problema de la fuerza bruta, pero luego sería menos útil porque las diferentes tarjetas podrían tener el mismo hash. Tal vez voy a dejar caer la idea de hash. – Joel

3

Si no necesita almacenar el número completo de la tarjeta de crédito, ¿por qué necesita almacenarla? Si desea guardar la institución financiera que emitió la tarjeta, ¿por qué no almacena la institución financiera que emitió la tarjeta?

+4

Como usuario, es útil para mí ver qué tarjeta se está utilizando para una transacción en particular. Puedo decir si un sitio todavía está usando mi número anterior en una tarjeta que se perdió y canceló, o si está usando mi nueva tarjeta. –

0

Aquí en Canadá, la manera habitual es almacenar los primeros 4 dígitos (para identificar a la institución financiera) y los 4 últimos dígitos para identificar la tarjeta de crédito.

Pero asegúrese de no infringir ninguna ley.

1

Las compañías de tarjetas de crédito tienen un estándar para esto. Probablemente lo encuentre enterrado en algún lugar de los términos de servicio de su procesador de pagos que obedecerá este estándar. Te responde tus preguntas. Puede encontrar el estándar here

4

de marzo de 2013 Edición:
Un recurso muy pertinente es la PCI Security Standards Council, una organización fundada en 2006 por cinco de las más grandes marcas de tarjetas de crédito mundial (Amex, Visa, MasterCard, JCB International y Discovery) y que es la autoridad de facto en cuestiones de seguridad para la industria de tarjetas de pago (PCI).
Esta organización publica en particular el PCI Data Security Standard, actualmente en su versión 2.0 edición que cubre cuestiones tales como la gestión de números de tarjeta de crédito completos o parciales.Este documento está disponible libremente, pero requiere un simple registro y reconocimiento de los términos de la licencia.

El siguiente es el original, c. Respuesta de 2009, en su mayoría correcta pero apócrifa.
Una práctica común (ya sea legal o no, no) es almacenar los últimos 4 dígitos, ya que esto puede usarse para ayudar al cliente a confirmar cuál de sus tarjetas de crédito se utilizó para una transacción en particular.

Sin mejorar significativamente las probabilidades de que una persona malintencionada adivine el número completo, uno puede almacenar los primeros 4 dígitos s que son representativos de la institución financiera que emitió la tarjeta, como se menciona en la pregunta.

no lo hace, guardar muchos más dígitos de los que estos 8 dígitos porque de lo contrario, dada la LUHN-10 checksum, puede proporcionar suficiente información para hacer adivinar el número completo más plausible (si todavía está relativamente duro, incluso con conocimientos a partir de las series utilizadas por un emisor determinado, en un período de tiempo dado, pero se debe tener cuidado ...)

Para que todo esto sea más seguro, técnica y legalmente, puede considerar solo almacenar dicha información si el cliente lo permite explícitamente . También debe considerar enmascarar esta información con un hash simple para almacenar en la base de datos.

Además, lo que puede/debe almacenar después de una transacción en particular, es el ID de transacción suministrada por el procesador de la tarjeta de crédito, en el momento de presentación de la transación. Esta identificación es la clave que permite ubicar la mayoría (¿todos?) De la información que incluso necesitaría, ¿habría algún problema con una transacción en particular? Este tipo de información generalmente se puede consultar desde un sitio web seguro mantenido por la empresa de procesamiento, junto con algunos informes agregados que pueden incluir una agrupación por tipo de tarjeta (Amex, Visa ...) si es por eso que está pensando en almacenar los primeros cuatro.

1

Su pregunta específica se responde en el apartado 3.3 del documento PCI/DSS. Los primeros seis y los últimos cuatro son máximos para mostrar. Los recibos del cliente (en papel?) Son más restrictivos. Aquellos con una necesidad legítima de saber pueden ver los datos completos de la tarjeta.

Mi recomendación es contactar a su proveedor comercial y ver qué opciones están disponibles para usted.Algunas de las puertas de enlace de transacciones modernas tienen características de "caja fuerte" donde la información confidencial se almacena en el proveedor y usted simplemente hace referencia a los clientes mediante un número de ficha cuando desea facturarlos o consultar información de la cuenta.

En la misma línea, el uso de tokens específicos de transacciones se puede utilizar para hacer referencia a los datos necesarios almacenados en el sistema de proveedores.

Sin embargo, no puedo dejar de insistir en la importancia de leer y comprender PCI DSS. ¡Simplemente patear el almacenamiento seguro no lo obstruye mágicamente para no estar sujeto a los requisitos de cumplimiento de PCI! Esto solo es posible cuando su sistema nunca toca datos completos de la tarjeta.

+2

"Lectura y comprensión de PCI DSS". Si buena suerte con eso. :) Sinceramente, tan pronto como las compañías de tarjetas de crédito comiencen a aplicar estrictamente esto, cada desarrollador necesitará el acceso a un experto, probablemente con capacidad legal, para asegurarse de que su software y hardware cumplan con los estándares. Definitivamente no fue escrito para que el programador informático promedio lo entienda. –

Cuestiones relacionadas