Almacenar información confidencial por un corto tiempo, ¿cómo debo cifrarla o incluso la necesito?

0

Así que aceptaré información confidencial a través de un formulario html, usaré PHP para almacenar la información. Todo esto se ha configurado, probado, etc. El formulario funciona en 4 "pasos", cada paso es su propio formulario html en una página php separada (step1.php, step2.php, step3.php, step4.php).

Mi problema es que ahora estamos empezando a almacenar cierta información confidencial (números de SS, números de teléfono, historial de trabajo, etc.) solo la almacenamos nosotros durante la duración de los pasos del formulario una vez que se envían en el paso 4, toda la información se envía a un entorno seguro y almacenado de forma segura allí (el servidor remoto no está bajo mi control) y eliminado de nuestro entorno.

Los datos se almacenan en sesiones de PHP, que almacenan los datos en archivos tmp. Todos los archivos temporales se eliminan automáticamente cada 30 minutos, en caso de que una sesión nunca se complete, toda la información aún se elimina.

Por lo que se trata de la pregunta real, ahora que tiene toda la información, ¿debo cifrar esta información? No sé mucho sobre criptografía y estándares.

    
pregunta AZer0 27.09.2015 - 20:43
fuente

2 respuestas

0

Tienes pocas opciones para manejar información confidencial

  1. recopile los datos y devuélvalos al cliente para cada paso (a través de los datos ocultos del formulario) para asegurarse de que ningún servidor o cliente esté almacenando los datos en cualquier momento.
  2. Almacene los datos en el lado del cliente (mediante cookies, almacenamiento local, etc.) y luego limpie los mismos una vez que se complete el proceso. Esto asegurará que no guarde ningún dato en el lado del servidor.
  3. Almacene los datos en el lado del servidor por la duración de la transacción, es decir, los datos de la sesión se deben eliminar tan pronto como se complete la transacción.

Si desea almacenar los datos en el lado del servidor, definitivamente se recomienda el cifrado. Según su descripción, parece que NO está planeando una conmutación por error. Teniendo eso en cuenta, puedes

  1. Use tmpfs (Disco RAM) para almacenar los archivos de datos de la sesión, lo que evitará escribir los datos en el disco (limpiar el disco como lo indican otros puede ser difícil).
  2. Genere una clave de cifrado larga al inicio y guárdela en $ Global. Use esa clave para cifrar y descifrar los datos antes de almacenarlos y después de recuperar los datos de la sesión.
  3. En caso de que esté utilizando una infraestructura de sesión compartida (como memcached), tendrá que crear una configuración más complicada para garantizar que su clave de cifrado se comparta de forma adecuada con todos los servidores que forman parte de la infraestructura. Además de eso, se necesitarán protocolos adicionales para actualizar las claves.
respondido por el jhash 28.09.2015 - 07:49
fuente
0

Si alguien obtiene acceso a su sistema mientras se está ejecutando, incluso si encripta sus datos, el atacante simplemente puede usar la misma clave para descifrarlos. Así que en ese caso no se agrega seguridad.

Sin embargo, si un atacante puede obtener acceso físico al servidor y roba el medio de almacenamiento, el hecho de tener los datos cifrados le denegaría el acceso si la contraseña solo se almacena en la memoria (y se crea al azar en el arranque). Sin embargo, debe tener cuidado de que los archivos que almacene se almacenen inmediatamente en forma encriptada y nunca toque el disco duro, ya que en ese caso aún podrían ser recuperables.

    
respondido por el Daan Bakker 27.09.2015 - 21:10
fuente

Lea otras preguntas en las etiquetas