Soy nuevo en la instalación de Discourse y recientemente lo configuré en un Droplet de Digital Ocean como nuestro foro/página de comunidad de la empresa.
Durante la instalación, noté que la entrada de la contraseña SMTP no está protegida y se almacena como texto plano en el archivo app.yml.
Eso parece un posible problema de seguridad. Sin embargo, no soy un experto en redes/seguridad, por lo que esto podría ser aceptable por varias razones. Pero para mantener feliz a nuestro Gerente de TI, me ayudaría si pudiera entender mejor por qué se hace de esta manera.
Sé que Discourse es ampliamente utilizado por muchas empresas, por lo que sospecho que este tema ya ha sido abordado suficientemente.
Las hashes son unidireccionales; no se pueden revertir a los datos originales.
Las contraseñas de usuario se almacenan como hashes porque no necesitan ser reversibles. Un hash de contraseña en la base de datos solo se consulta cuando el usuario intenta iniciar sesión. El hash de la contraseña proporcionada se compara con el hash de contraseña almacenado en el registro de ese usuario.
Es bastante común que cosas como contraseñas de SMTP y claves de API se almacenen en texto plano. Necesitan transmitirse en su forma original, por lo que almacenarlas como hashes impediría su uso. Si el tercero aceptara un hash de la contraseña, no habría beneficio en usar hashes como forma de protección.
Como dijo Jay más arriba, si se compromete la integridad física de tu servidor y se accede a tu app.yml, tienes problemas mucho más graves de los que preocuparte que restablecer una contraseña de SMTP.
Una advertencia importante aquí: no deberías usar la contraseña de SMTP en ningún otro lugar, pero esto no es específico de Discourse. Es una buena práctica de seguridad para todos los sistemas y todas las cuentas.
Como dijo Jay, si alguien obtiene acceso a tu archivo app.yml, tienes otros problemas. Eso significa que probablemente tienen acceso root completo a tu servidor, incluida tu base de datos de producción.
La mejor práctica en este caso sería asegurarte de que tu servidor esté seguro.
Estoy de acuerdo en que proteger el servidor es la primera línea de defensa. Sin embargo, en este caso no está bajo mi control, ya que he instalado Discourse en un Droplet de Digital Ocean.
@Stephen: Gracias por la información de contexto sobre las contraseñas de SMTP. No sabía que era común almacenarlas en texto plano para este tipo de uso. Como dije, esto está fuera de mi área de especialización. Solo fue algo que llamó mi atención y quise preguntar.
No exactamente Puedes restringir los inicios de sesión solo a una clave SSH, tener un firewall activo y asegurarte de que los parches de seguridad se apliquen regularmente. Eso representa un porcentaje significativo para asegurar un droplet.
Eso es correcto. Y a menos que tengas el sistema de archivos cifrado, lo cual es difícil de hacer, entonces también tienes que confiar en ellos. Tienen acceso físico a los servidores y a la red.
Como se explicó, solo necesitas tener la contraseña para poder usarla.