security - encriptada - encriptar y desencriptar sha1 php
¿Cómo no codificar contraseñas? (4)
En mi última pregunta "Base de datos portátil para almacenar secretos", la mejor respuesta hasta ahora es utilizar sqlite-crypt.
Al leer documentos sqlite-crypt, el nuevo parámetro para abrir la base de datos es la frase de paso. Por supuesto, no quiero hardcode la contraseña, ¿por qué estaba pensando cuál es el mejor, simple y rápido método para almacenar esa contraseña?
Algunas opciones
Pídale al usuario una clave (también memorizan una contraseña para obtener su contraseña) (buena idea)
Cree una clave en el primer inicio de la aplicación, que luego se procesa a su manera particular (mala idea)
Use una combinación de las anteriores, también déle a los usuarios las opciones de una o dos (recuerde mi casilla de verificación de contraseña)
En Windows podría / debería usar DPAPI , la API de protección de datos que proporciona cifrado de almacenamiento.
Está ahí solo para este tipo de problema.
El cifrado del almacenamiento se basa en:
- la cuenta de usuario, por lo que solo el usuario conectado puede acceder a los datos. Esto hace que los datos sean transferibles a otra PC con exactamente las mismas credenciales de usuario.
- la máquina, haciendo que los datos solo sean accesibles en esa configuración de máquina en particular y no transferibles a otra PC.
Hay un show de dnrTV con Karl Franklin que muestra exactamente lo que se necesita para implementar esto y otras funciones de cifrado.
El código fuente del programa también está disponible en la página.
Hay, por supuesto, muchos otros artículos sobre ese tema.
La codificación es inevitable en algún momento, a menos que la contraseña solo se use interactivamente.
Lo mejor que puede hacer en una situación de contraseña en el archivo es hacer que sea muy difícil acceder a ella en primer lugar, y luego limitar lo que se puede hacer con ella si alguien la encuentra. Una regla práctica es que no debe otorgar más privilegios a una contraseña almacenada en una cadena que la que debe escribir en un aviso.
Tienes que almacenarlo en un usuario.
De lo contrario, solo estás sustituyendo algún otro mecanismo de seguridad por el que estás preguntando ...
El punto de David en el comentario sobre la respuesta de Infamy está bien tomado. Se debe permitir cierta flexibilidad, en caso de que el usuario maneje la protección en una capa inferior ... Por lo tanto, vaya a votar por Infamy.