database - password - Almacenamiento de contraseña en bases de datos en texto plano frente a las necesidades del cliente
password hacked (11)
Quiero llamar "almacenamiento de una contraseña en texto plano en una base de datos" una mala práctica ... pero nuestro cliente lo hizo en su aplicación. Quieren que renueve esa aplicación.
Mi punto: quiero cambiar esto ... pero como no es una necesidad para nuestro cliente, aún no está claro.
¿Cómo manejas estos problemas con respecto a la seguridad? Desde mi punto de vista, es difícil explicar tales problemas a los Clientes.
Bastanneu, ¿conoces la expresión inglesa "Cover your a **"? Imagina este escenario:
- Le preocupa que no les importe la seguridad y no quieran escuchar su mensaje. Usted les dice de todos modos y dicen que no a los cambios.
- Ellos son pirateados.
- Te preguntan por qué no dijiste nada antes.
Te recomiendo que hagas saber tus preocupaciones por adelantado. Y conserve la prueba (carta firmada, etc.).
Creo que las "malas prácticas" son un eufemismo. "Irresponsable" podría ser más preciso.
Si vale la pena protegerlo con una contraseña, vale la pena hacerlo correctamente. Almacenar contraseñas en texto plano es una brecha de seguridad embarazosa esperando a suceder.
Si la "seguridad" está en algún lugar de los deseos de sus clientes (que supongo que es así, ya que hay contraseñas), implícitamente han pedido un sistema de seguridad decente, que incluye un manejo adecuado de las contraseñas. No pueden pedir "que se almacenen las contraseñas de forma segura" (hash y salado) porque no son expertos; para eso te contrataron.
Desde un punto de vista estrictamente profesional, debes preguntarte si dejarlo como se plantearía como problema más adelante (¿tienes un contrato de soporte que se pueda solicitar en caso de que un secuestrador robe un pase del DB? )
Personalmente, no creo que sea difícil explicarle a alguien por qué el almacenamiento de pases no encriptados no es seguro, sin embargo, como apuntó Daok, no es necesario preocuparse por los pases en el sistema que no contiene información privada-personal-secreta-mágica. .
Hoy en día parece tan fácil de usar el cifrado para este fin que, dependiendo de la tecnología que esté utilizando, podría significar el más mínimo esfuerzo en la codificación y el tiempo para hacerlo.
¡Salud!
Escriba una carta formal breve, clara y libre de jerga que indique sus inquietudes y concluya que, en su opinión profesional, debería rectificarse. Diríjalo a alguien razonablemente alto en el cliente.
Si luego eligen ignorar su consejo, esa es su prerrogativa.
(Guarde también una copia de la carta).
La mejor razón para nunca guardar la contraseña en texto plano es en realidad una legal.
Existen leyes, como la Ley de Protección de Datos en el Reino Unido, que establecen que se deben realizar esfuerzos razonables para mantener seguros los datos confidenciales. Almacenar contraseñas en texto plano claramente violará esto y, a su vez, anulará cualquier seguro de indemnización que tenga en caso de una violación de la seguridad. Esto podría dejarlo abierto a una gran demanda de responsabilidad civil si no toma esta medida simple.
Cuando se trata de hombres de negocios, siempre hay que hablar en términos de sus bolsillos, y afirmar que trabajar una hora para descifrar las contraseñas, y cambiar el inicio de sesión les costará una pequeña cantidad en comparación con el costo potencial si algo sale mal.
También vale la pena señalar que si alguien ha diseñado un sistema tan fundamentalmente defectuoso como este, la probabilidad de que exista un error que pueda exponer datos confidenciales como este es exponencialmente más alta.
Además de esto, como otros dijeron, una demostración en vivo es buena. saque la contraseña de un miembro del personal al azar de la base de datos, y pruébela en sus otros sistemas, no tendrá que probar muchos antes de ingresar.
Las demostraciones y explicaciones son más útiles, pero cuando dice que debe "renovar" la Aplicación, ¿está trabajando desde la documentación, una especificación funcional o técnica?
Pedir una participación en la finalización de estos documentos e incluirlos en su aprobación sería una buena idea.
En última instancia, es una necesidad para el cliente, simplemente aún no se dan cuenta.
Si puedes, una demostración en vivo funciona genial. Pídale al usuario que cree una cuenta con una contraseña (no la contraseña que normalmente usa). Vaya a la base de datos y recupere, y explique que cualquiera que tenga acceso a su base de datos (ya sea por permiso o por una violación de seguridad) simplemente puede continuar y hacer esto.
Simplemente debe explicar al cliente que el inicio de sesión no es seguro si alguien con mala intención tiene acceso a la base de datos. Si la aplicación está dentro de la empresa, tal vez no valga la pena cambiarla. Tienes que analizar si realmente es un valor y solo puedes saberlo hablando con el cliente. Tal vez los datos no son muy confidenciales y no es una prioridad tener mucha seguridad. Todo depende del objetivo del software y de dónde está la base de datos y qué quiere el cliente que sus datos estén seguros.
Yo les explicaría que lo que han hecho es una mala práctica y les pregunto si les gustaría que la cambien. Recomendaría no hacer nada fuera del permiso de lo que se te pidió que hicieras sin consultarlos.
Esta es una situación en la que tienes que expresar las cosas correctamente. Las contraseñas de texto plano no son algo que usted califique como "mala práctica". Es algo que usted dice que está roto, algo que simplemente no se puede hacer. Debe hacer que su contrato dependa de la fijación de su almacenamiento de contraseñas, no es opcional. Eso no quiere decir que no pueda tener una discusión amistosa sobre por qué no se puede hacer, pero debe dejar en claro que no lo hará, sin importar qué.
Entonces la pregunta es cómo convencer a los empresarios de que no es una solución válida. Esto también debería ser bastante fácil. Busque los responsables de la toma de decisiones y llévelos a una máquina en la que tenga abierto el navegador de consulta de la base de datos. Escriba la consulta "Seleccionar contraseña de credenciales donde nombredeusuario = ''DECISION_MAKERS_USERNAME''", luego haga que el responsable de la toma de decisiones lo ejecute (sea cortés y no mire la pantalla como lo hacen) Explique que cualquier empleado con acceso a la base de datos podrá hacer esto. En general, creo que eso sería bueno, pero si necesita explicar más convincentemente que una gran parte de los usuarios comparte contraseñas entre las aplicaciones, y que cualquier empleado podría entrar en cosas como cuentas bancarias, cuentas de correo electrónico, etc. eso. Si eso aún no es suficiente, explique ejemplos de demandas y multas para las empresas que lo han hecho.
Hagas lo que hagas, no expliques los detalles técnicos de nada de eso. Solo muestra las consecuencias. No explique hash, sales ni palabras como "texto plano". Simplemente explique que es ahora, que las personas pueden ver las contraseñas y que será fácil cambiarlas para que nadie pueda ver las contraseñas, pero aún así funcionarían.
Si no puede convencerlos, no se lleve al cliente. Y probablemente debería advertir a los usuarios de la aplicación que sus contraseñas no están almacenadas de forma segura.
Nunca almacene una contraseña en texto sin formato.
Yo recomendaría leer esas preguntas:
- Cómo almacenar mejor la información del usuario y el inicio de sesión y la contraseña del usuario
- Mejores prácticas para almacenar contraseñas de base de datos
- Mejores prácticas de administración de contraseñas (sopa a nueces, no solo almacenamiento o generación)
- Salting Your Password: Best Practices?
- ¿Está bien almacenar la contraseña en texto plano en una variable php o php constante?
Si a su cliente no le interesan los detalles, simplemente impleméntelo. (También proporcione un procedimiento de recuperación de contraseña adecuado). No es realmente un gran problema para usted como programador, pero realmente mejora la seguridad y la calidad de su producto.
Si quiere saber lo que intenta cambiar, explíquelo. Cuéntele sobre los problemas de seguridad y él lo entenderá. También un ejemplo en vivo realmente ayuda a abrir los ojos de los clientes: simplemente recupera su contraseña de su antiguo sistema y muéstrele cuán fácil sería para todos.
Siempre lo he hecho de esa manera: si creo que es importante tener una función de seguridad en uno de mis productos, siempre lo he incluido. Añade una gran ventaja a la calidad de sus productos y le da muchos momentos de "woah, pensó en todo".