Cómo permitir que solo el usuario final acceda a los datos en una aplicación web

1

He leído mucho sobre los métodos de cifrado comunes que se utilizan en una aplicación de django.

Sin embargo, mis requisitos son muy diferentes. Estoy buscando una forma de cifrar los datos de mi aplicación web para que solo el propietario de los datos pueda acceder a ellos. Eso significa que incluso nosotros no podremos acceder a ellos.

Esto significa que cada propietario de documento diferente tendrá que tener una clave de descifrado diferente, y obviamente no podemos almacenar esta clave en el servidor, de lo contrario también podemos abrir los documentos. ¿Eso significa que cada vez que un usuario necesite acceder a su documento, deberá ingresar la clave de descifrado? No me gusta esto, porque hace que la aplicación web sea casi inutilizable. ¿Hay mejores alternativas?

    
pregunta user469652 21.01.2016 - 09:07
fuente

1 respuesta

2

La única forma de hacerlo es entregar los datos cifrados al navegador de los usuarios y hacer que el código del navegador los descifre.

Para lograrlo, también debe proporcionar un mecanismo para que el usuario ingrese algún tipo de clave que solo ellos conozcan.

Sin embargo, puede presentarles eso como un código de acceso y establecer los requisitos de longitud / complejidad mínimos adecuados.

Sin embargo, es posible almacenar en caché la información de seguridad localmente para que el usuario no tenga que seguir ingresándola. Obviamente, sin embargo, cuanto más tiempo se almacena en caché, más se expone. Pero, de nuevo, la seguridad inutilizable es tan mala como la no seguridad.

Puede combinar el uso de su inicio de sesión de autenticación con el código local para crear una clave propiedad del usuario al pasar la contraseña con hash al backend para la autenticación, pero también ejecutar un algoritmo para proporcionar el cifrado local. Esto sería razonablemente seguro ya que el back-end nunca sabrá la contraseña real. Sin embargo, las contraseñas típicas no contienen suficiente entropía para el cifrado, por lo que debe al menos introducir la contraseña y probablemente ejecutar varias rondas de cifrado.

Me temo que no tengo idea si algo de esto es factible en Django ya que no lo uso. Aunque una rápida búsqueda en Google sugirió algunas líneas de investigación esperanzadoras.

    
respondido por el Julian Knight 23.01.2016 - 17:18
fuente

Lea otras preguntas en las etiquetas