¿Cómo puedo almacenar una contraseña de forma segura en un archivo .class?

0

Tengo algunos archivos .java que contienen algunas variables de contraseña, y estas variables tienen valores:

String password = "xyz";

Ahora, después de ejecutar, cuando abro el archivo .class, contiene esas contraseñas. ¿Cómo puedo guardar mi contraseña en algún lugar seguro? No quiero usar DB para almacenar.

    
pregunta Aarti Jangid 13.12.2016 - 07:28
fuente

2 respuestas

6

No puedes.

Si la aplicación tiene que conocer la contraseña, no hay forma de almacenarla de forma segura, a menos que le pida a un usuario en tiempo de ejecución una contraseña maestra. Porque si la aplicación puede obtenerlo, un atacante podría hacer lo mismo directamente si se almacena en texto sin cifrar o con ingeniería inversa si ha sido ofuscado.

La pregunta real es: ¿por qué una aplicación debe saber una contraseña? Si es interactivo, debe solicitarlo (o una contraseña maestra utilizada para decodificar una bóveda cifrada) a un usuario, y si no lo es (un servicio o demonio), debe confiar en la identificación de la máquina en una red local controlada. o acepte que cualquier persona que tenga suficientes privilegios para ver los archivos de la aplicación puede conocer la contraseña y proteger (incluida la protección física) la máquina y la cuenta que ejecuta la aplicación.

    
respondido por el Serge Ballesta 13.12.2016 - 10:05
fuente
-2

No soy un desarrollador de Java, naturalmente, trabajo con C #, pero sé que almacenar contraseñas en texto sin formato no es una forma segura de almacenarlas.

Por lo que yo sé; Puedes descompilar Java, en cuyo caso podrás leer las contraseñas sin ningún problema. Si está ejecutando un proyecto de código abierto con código fuente en un repositorio en algún lugar; almacenar esta contraseña en texto sin formato será un problema mucho mayor que almacenarlo en la base de datos.

Personalmente, creo que cualquier contraseña debe cifrarse con un algoritmo actualizado que no creas tú mismo, sino que utilizas una biblioteca confiable y confiable para hacer esto por ti.

Al mirar a su alrededor, parece que usar char [] es mucho mejor que usar una cadena porque las cadenas son inmutables.

  

Como referencia, he encontrado un artículo que explica algunos de los mejores.   prácticas para almacenar contraseñas:

enlace

  

char [] vs cadena que almacena las contraseñas:

enlace

No tengo experiencia personal en el desarrollo de Java como se mencionó; pero me preocuparía mucho ver las contraseñas almacenadas en texto sin formato.

    
respondido por el Gary Hammett 13.12.2016 - 10:00
fuente

Lea otras preguntas en las etiquetas