37 votos

¿Guardar la información de la tarjeta de crédito en la base de datos MySQL?

Quiero permitir que los usuarios de mis clientes introduzcan los datos de su tarjeta de crédito para poder cobrarles cada mes.

Me pregunto cómo se debe guardar esta información.

¿Debe guardarse en la base de datos MySQL (tabla "usuario") o este tipo de información es demasiado sensible y debe almacenarse en otro lugar?

No tengo experiencia en esto y me gustaría que alguien me aconsejara cómo lograrlo.

Gracias.

85voto

John Conde Puntos 102874

Como se ha mencionado anteriormente, no almacene la información de la tarjeta de crédito en una base de datos. Es una receta para los problemas. Hacerlo le convertirá en un objetivo muy atractivo para los piratas informáticos y, si consiguen recuperarlos, acabará con su negocio y potencialmente arruinará su vida y la de aquellos cuyos números de tarjeta de crédito sean robados.

Dicho esto, aquí hay tres cosas a tener en cuenta:

1) Su mejor opción es utilizar un procesador de pagos/pasarela de pagos que ofrezca facturación recurrente. Un ejemplo de ello es Facturación periódica automatizada de Authorize.Net servicio. Una vez que hayas configurado la suscripción, ellos facturarán automáticamente al usuario cada mes por ti y te harán saber los resultados de la transacción. Te ahorra un montón de trabajo y te libera de la responsabilidad de almacenar la información de la tarjeta de crédito.

2) Si almacena números de tarjetas de crédito debe seguir Directrices de la PCI . Estas directrices son establecidas por el sector de las tarjetas de pago y definen lo que se puede y no se puede hacer. También definen cómo debe almacenarse la información de las tarjetas de crédito. Tendrá que encriptar los números de las tarjetas de crédito y debería, aunque no está obligado, a encriptar la información relacionada (fecha de caducidad, etc.). También se le pedirá que se asegure de que su servidor web y su red son seguros. Si no cumple con la normativa PCI, perderá su cuenta comercial y se le prohibirá tener una verdadera cuenta comercial para siempre. Esto le limitará a utilizar procesadores de terceros, que son menos flexibles. Tenga en cuenta que las directrices de la PCI son un buen comienzo, pero difícilmente un "cómo" cuando se trata de la seguridad en línea. Su objetivo sería superar la recomendación (por mucho).

3) Las leyes estatales sustituyen al cumplimiento de la PCI. Si sufre una infracción y le roban los números de las tarjetas de crédito, se arriesga a ser procesado penalmente. Las leyes varían de un estado a otro y están en constante cambio, ya que los legisladores están empezando a darse cuenta de la gravedad de este asunto.

En cuanto a la encriptación, asegúrate de leer qué algoritmos de encriptación son seguros y no se han roto todavía. Blowfish es un buen comienzo y si utiliza PHP el biblioteca mcrypt se recomienda ( ejemplo ).

17voto

ZippyV Puntos 7671

La forma más segura es NO almacenar la información de la tarjeta de crédito en su sistema, pero dejar que un 3 rd proveedor de pagos lo haga por usted.

6voto

OMG Ponies Puntos 144785

No es necesario que utilices un proveedor de pagos de terceros como PayPal, etc. - pero es necesario que Cumple con la PCI si va a almacenar la información de la tarjeta de pago. Lea este artículo sobre BC Ferries, que se enfrenta a importantes multas por no estar al día en el cumplimiento de la PCI para comprender lo serio que es cumplir con la PCI.

Mi actual empleador está pasando por el cumplimiento de la PCI - no es un proceso trivial, y requiere personal para la auditoría. El cumplimiento depende de las leyes del país y del estado/provincia - Canadá, según creo, requiere que un comité empleado por la PCI te certifique, mientras que algunos estados de EE.UU. permiten que las empresas de auditoría de cumplimiento de la PCI actúen en lugar del comité de la PCI.

-8voto

Frank C. Puntos 2630

Yo sugeriría que el lugar en el que se almacena no es el problema, la clave es encriptarlo.

No has especificado por qué necesitas su información de CC (que siempre debería ser una opción presentada al usuario).

Así que:

  1. Has dicho que el cliente "entra" en la CC, así que supongo que se transporta por la red. Más vale que sea una ruta segura (SSL, SSH).
  2. No debe almacenarse en la memoria de forma clara, debe estar encriptada
  3. No debe persistir en forma clara, debe estar encriptada

Si yo fuera un usuario y me dijeras "Oye, es seguro... Lo almaceno en una base de datos", exigiría inmediatamente que eliminara cualquier aspecto de mis datos de su sistema.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X