usando soporta sencillo segundo registros por para optimizar lentas hacer cuantas consultas como codigo buscar buscador boton avanzado php mysql security aes

php - soporta - ¿Cómo puedo mantener segura una base de datos mySQL?



optimizar consultas lentas mysql (4)

Voy a implementar una configuración PHP/mySQL para almacenar información de la tarjeta de crédito.

Parece que AES_ENCRYPT/AES_DECRYPT es el camino a seguir,

pero todavía estoy confundido en un punto:

¿Cómo mantengo segura la clave de cifrado?

Integrarlo en mis scripts PHP (que vivirán en el mismo servidor que el db) parece un gran agujero de seguridad.

¿Cuál es la solución de "mejores prácticas" aquí?


la seguridad que necesita depende de su aplicación. por ejemplo, si el único momento en que se usará el cc # es cuando el usuario está conectado (escenario del tipo de tienda en línea delgada), entonces puede encriptar el cc # con el hash de la contraseña de texto sin formato del usuario, una sal de usuario, y una sal de cc # dedicada. no almacene este valor permanentemente.

ya que no está almacenando este valor, la única vez que puede obtener este valor es cuando el usuario ingresa su contraseña para iniciar sesión. Solo asegúrese de que tenga buenas políticas de caducidad de sesión y recolección de basura.

si esta situación no se aplica a usted, describa su situación con más detalle para que podamos brindarle una respuesta más adecuada.


Debería pensar detenidamente si REALMENTE necesita mantener el CC #. Si no tienes una buena razón, ¡NO! Cada dos semanas escuchas que una empresa se ve comprometida y le roban CC #. Todas estas empresas cometieron un error fatal: guardaban demasiada información. Mantenga el CC # hasta que se complete la transacción. Después de eso, elimínelo.

En cuanto a asegurar el servidor, lo mejor es asegurar el hardware y usar el socket del sistema interno a MySQL, y asegurarse de bloquear cualquier acceso de red al servidor MySQL. Asegúrate de estar usando los permisos de tu sistema y los permisos de MySQL para permitir el menor acceso posible. Para algunas secuencias de comandos, puede considerar la autenticación de solo escritura. Realmente no hay un método de encriptación que sea infalible (ya que siempre será necesario descifrarlo y, por lo tanto, debe almacenar la clave). Esto no quiere decir que no deba: puede almacenar su clave en una ubicación y, si detecta un compromiso del sistema, puede destruir el archivo y dejar inutilizados los datos.


Estoy de acuerdo, pero no lo haga si no lo necesita también. Pero si realmente lo tiene también, asegúrese de que el archivo que lo tiene no esté accesible en la web. Puedes escribir un binario que devuelva la clave. De esta forma no se almacena en texto claro. Pero si su servidor es un compromiso, todavía es fácil de obtener.


MySQL, hay seis sencillos pasos que puede seguir para proteger sus datos confidenciales.

Paso 1: eliminar comodines en las tablas de concesión

Paso 2: requiere el uso de contraseñas seguras

Nota: Use la opción "--secure-auth" de MySQL para evitar el uso de formatos de contraseñas MySQL más antiguos y menos seguros.

Paso 3: verifica los permisos de los archivos de configuración

Paso 4: cifre las transmisiones cliente-servidor

Paso 5: deshabilita el acceso remoto

Paso 6: controlar activamente el registro de acceso de MySQL

Herramientas de seguridad