mysql - industry - Mejores prácticas para almacenar información de CreditCard en DataBase
authorize credit card (7)
En mi país, los pagos en línea no son algo antiguo, la primera vez que vi una aplicación web que recibía pagos directamente en una cuenta bancaria local fue el año pasado.
Entonces, soy un sistema de pago web de codificación para novatos.
Mi pregunta es, ¿cuáles son las mejores prácticas para almacenar información de tarjetas de crédito en la base de datos ...
Tengo muchas ideas: cifrar la tarjeta de crédito, la restricción de seguridad de la base de datos, etc.
¿Qué has hecho?
Debe evitar almacenar cualquier información de tarjeta de crédito debido a los riesgos para usted y para los clientes de hacerlo.
En miniumum, siga las PA DSS (Estándar de seguridad de datos de la aplicación de pago). Aquí se puede encontrar más información:
https://www.pcisecuritystandards.org/security_standards/pa_dss.shtml
También sería conveniente consultar PCI DSS, que se puede encontrar aquí:
https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
Encriptar encriptar encriptar No descifre si no tiene absolutamente que hacerlo: no descifre para mostrar los últimos 4 dígitos. No descifrar para decirle al usuario cuál era su tarjeta.
De hecho, si puede, ni siquiera mantenga los números de tarjeta cifrados en el mismo servidor físico que el resto de la información del usuario.
Para esto, recomiendo un enfoque integral y en capas.
En primer lugar, almacenar la información de la tarjeta de crédito debe ser una opción.
En segundo lugar, los datos deben almacenarse de forma segura, utilizando una forma fuerte de encriptación. Recomiendo AES con un tamaño de clave de 256 bits. Asegúrese de que al elegir su clave, utilice todo el espacio de claves (es un error de novato utilizar simplemente una cadena de caracteres alfanuméricos generada al azar como una tecla).
En tercer lugar, la clave AES debe estar adecuadamente asegurada. No incruste el valor dentro de su código. Si está usando Windows, considere usar DPAPI.
En cuarto lugar, deseará configurar los permisos de la base de datos para que las aplicaciones y las computadoras tengan acceso según sea necesario.
En quinto lugar, asegure la cadena de conexión a su base de datos.
En sexto lugar, asegúrese de que cualquier aplicación que tenga acceso a los datos de la tarjeta de crédito lo asegure adecuadamente.
Sugiero que encriptes los números de las tarjetas con un algoritmo fuerte (similar AES) y una larga clave secreta.
Luego, mantenga su clave secreta en un lugar seguro similar a un disco duro o óptico externo. Cuando necesite la clave secreta, use hard externo.
Si está utilizando un host compartido, debe almacenar su clave secreta en un dispositivo externo.
Estricto su base de datos
- Definir usuarios estrictos para su base de datos
- Elimine el usuario root de su base de datos si no es necesario.
authorize.net tiene una API de Administrador de información del cliente que le permite almacenar información del cliente en su sistema. Cuesta $ 20 / mes. como un complemento a su cuenta.
NO LO HAGAS
Simplemente implica demasiado riesgo y, por lo general, deberá someterse a una auditoría externa para asegurarse de que cumple con todas las leyes y prácticas de seguridad locales pertinentes.
Hay muchas compañías de terceros que lo hacen por usted y que ya han tenido problemas para asegurarse de que su sistema sea seguro, que cumplan con las leyes locales, etc. Un ejemplo en los EE. UU. Que he usado en el pasado es authorize.net . Algunos bancos también tienen sistemas en los que puede enganchar para almacenar datos de tarjetas de crédito y procesar pagos.
Me doy cuenta de que el país en el que se encuentra puede no tener leyes tan estrictas como las de EE. UU., Pero, en mi opinión, eso no es excusa para hacer las suyas propias. Cuando se trata de dinero ajeno, el riesgo es demasiado para justificarlo.