convencer a la compañía de no almacenar números de tarjetas de crédito en nuestra aplicación web

36

La empresa para la que trabajo necesita un sistema para realizar cargos mensuales de tarjeta de crédito a las cuentas de los clientes. Los clientes podrán actualizar la información de su tarjeta de crédito desde una interfaz en línea escrita en PHP (que se presentará a través de HTTP a través de SSL). Los cargos mensuales se ejecutarán manualmente a través de un área de administración protegida por contraseña de la misma interfaz, que básicamente equivaldrá a una llamada por lotes a la API de Authorize.Net.

Mis compañeros de trabajo desean almacenar la información de la tarjeta de crédito (encriptada) en una base de datos MySQL. Planean encriptar los números de las tarjetas de crédito con extensión mcrypt de PHP , probablemente usando Rijndael / AES o Twofish. El tema de la administración de claves se pasó por alto, pero se mencionaron las siguientes dos opciones:

  1. almacenar claves en la base de datos, con una clave separada para cada entrada de tarjeta de crédito; o

  2. almacenar una única clave de cifrado para todas las entradas de tarjeta de crédito en un archivo PHP como una variable (similar a cómo las aplicaciones PHP como WordPress y MediaWiki almacenan las credenciales de la base de datos).

¿Cómo puedo convencerlos de que no sigan esta ruta? Utilizaremos Authorize.net para proceso de pago, así que mencioné su servicio Customer Information Manager como una alternativa para almacenar la información de la tarjeta de crédito por nosotros mismos. Sin embargo, no conozco el tema lo suficientemente bien como para presentar un argumento convincente (mis argumentos eran "ninguno de nosotros es experto en seguridad" y "no me sentiría cómodo con una compañía que almacene la información de mi tarjeta de crédito de esta manera").

Si no puedo convencerlos de usar un servicio de terceros como Customer Information Manager , ¿qué debo tener en cuenta para conservar la información de la tarjeta de crédito de los clientes? ¿seguro? En particular, ¿cómo debo gestionar las claves de cifrado? ¿Debería haber una clave de cifrado separada para cada entrada de cliente? ¿Dónde puedo almacenar las claves para poder descifrar la información de la tarjeta de crédito antes de enviar las transacciones a Authorize.Net? Las dos opciones mencionadas anteriormente no me parecen muy acertadas (pero, una vez más, no conozco el tema lo suficientemente bien como para presentar un argumento convincente en contra de cualquiera).

Actualización : encontré a alguien en la empresa familiarizado con el cumplimiento de PCI DSS, así que estoy trabajando con él para asegurarme de que esto se haga correctamente. Sin embargo, todavía apreciaría las respuestas a mis preguntas anteriores (tanto para mejorar mi conocimiento como para ayudar a otros en una situación similar).

Actualización 2 : ¡Éxito! Otro desarrollador se sentó y leyó la guía de PCI DSS y decidió que, después de todo, es una mala idea almacenar la información nosotros mismos. Utilizaremos el servicio Customer Information Manager de Authorize.Net

.     
pregunta M8R-53mg86 14.08.2012 - 22:40
fuente

4 respuestas

32

Almacenar números de tarjetas significa que debe cumplir con los requisitos de PCI-DSS, o corre el riesgo de multas y el incumplimiento de su contrato de cuenta de comerciante. PCI-DSS tiene un conjunto enorme de requisitos, algunos razonables, otros onerosos, algunos de utilidad cuestionable, y el costo de cumplirlos y certificar que los ha cumplido pueden ser muy altos.

Descargue el estándar PCI-DSS 2.0 y tenga miedo.

En particular, ninguno de los enfoques sugeridos es compatible con PCI-DSS. Las claves no deben almacenarse sin protección o en el mismo lugar que los datos del titular de la tarjeta que protegen.

Si debe implementar esto internamente, debe aislar los componentes que tocan los números de las tarjetas de todo lo demás, de modo que el PCI-DSS solo se aplique a un número limitado de sistemas. Considere las soluciones de tokenización para ayudarlo a mantener al mínimo la exposición de los datos de su tarjetahabiente. Si no lo hace bien, puede colocar fácilmente todos sus servidores (¡o incluso todos sus escritorios corporativos!) En el ámbito de PCI, en cuyo punto el cumplimiento se vuelve difícil de hacer imposible.

Authorize.net ofrece servicios automatizados de facturación recurrente. Por amor a la cordura, usa eso.

    
respondido por el bobince 16.08.2012 - 00:20
fuente
27

"Ninguno de nosotros es un experto en seguridad" y "No me sentiría cómodo con una compañía que almacena la información de mi tarjeta de crédito de esta manera" son argumentos completamente válidos. Desde una perspectiva técnica (en cuanto al fondo), deberían terminar la discusión. Pero si está discutiendo con personas que no son expertos en seguridad, es posible que no estén en condiciones de reconocer buenos argumentos.

Entonces, si encuentra que discutir sobre los méritos no lo está llevando a ningún lado, saque The Sledgehammer of Compliance (hace un daño de +20 a los burócratas). En particular, recuérdeles a los PCI DSS. Pregúnteles si han descontado el costo de lograr el cumplimiento de PCI DSS. Pídales un análisis de costo-beneficio de cuánto ingreso adicional proporcionará esta característica (generalmente, la respuesta es: 0) y cuánto costará el negocio (generalmente, la respuesta es: grande). En la mayoría de las situaciones, se acabará el juego.

O, al menos, debería terminar la discusión. Si no es así, hable con sus gerentes, ya que esta es, en última instancia, una decisión comercial, y deberían reconocer rápidamente la llamada correcta.

Y si sus gerentes no lo entienden, bueno, todo lo que puedo sugerir es: obtener nuevos gerentes. Tal vez sea hora de actualizar tu currículum.

    
respondido por el D.W. 15.08.2012 - 02:42
fuente
7

No parece que su empresa haya pasado por una evaluación en sitio de PCI DSS antes o incluso haya intentado responder todas las preguntas en el SAQ D. Para casi todas las empresas que lo tienen, están buscando una manera de Deshágase de los datos del titular de la tarjeta y espere que no sea demasiado costoso para ellos hacerlo. Si se encuentra en un punto en el que aún no es costoso implementar una solución, debe almacenar absolutamente sus datos con Authorize.net u otro tercero.

El mejor argumento que puede presentar a sus compañeros de trabajo es explicarle qué tan grande es la PCI de la molestia y cuánto se reduce esta molestia si no está almacenando los datos del titular de la tarjeta usted mismo. Mantener el cumplimiento de PCI es un trabajo de tiempo completo. Si está almacenando datos del titular de la tarjeta, hay muchos más requisitos que debe cumplir para mantener el cumplimiento (el PCI DSS SAQ D es dos veces más largo que el SAQ C). La descarga de los datos es la forma más sencilla de ir. Honestamente, ni siquiera consideraría almacenar los datos ustedes mismos.

    
respondido por el freb 15.08.2012 - 18:31
fuente
4

La mayoría de los jefes / compañeros de trabajo no necesariamente entienden todos los problemas "técnicos" que podría estar presentándolos.

Por lo tanto, debe abordarlos en un área que puedan entender perfectamente: costo / dinero.

Una de las cosas que me parecen útiles al explicar esto es que si usted fuera pirateado y le robaran la información de la tarjeta de crédito, serán responsables, no solo de las multas, sino también del costo de la reemisión de una nueva tarjeta de crédito. .

Por ejemplo: si su compañía tiene 100,000 números de tarjetas de crédito, les costaría un millón de dólares por reemplazar esas tarjetas ANTES de pagar multas, etc. (ah, y por la forma en que el CFO puede ir a la cárcel si no fueran PCI compatible)

Igual que ellos tienen seguro para su propiedad

    
respondido por el pzirkind 16.08.2012 - 02:19
fuente

Lea otras preguntas en las etiquetas