Pregunta

Tengo un programa, y en que programa hay algunas variables (nombre de usuario y privilegios "nivel"), que son sólo cambia cuando el usuario inicia sesión.Hay una forma de "seguro" estos varaibles de la memoria de edición, etc mientras se ejecuta el programa, pero el programa es capaz de cambiar si el usuario inicia sesión con otro nombre de usuario.

Pensé que iba a funcionar (no lo he probado) para utilizar const o de sólo lectura, pero ¿es posible cambiar cuando el usuario relogs?

También, es posible hash/cifrado de cadenas que se usan en el programa, de modo que el usuario no es capaz de encontrarlos buscando en la memoria (es decir,el uso de Cheat Engine)?

¿Fue útil?

Solución

Si las credenciales de usuario y software se están ejecutando en la máquina del usuario, es imposible para detener el usuario cambie los valores.

Si las credenciales de acceso y se almacenan en un servidor remoto, puede utilizar ese servidor y tener el usuario sólo guardar un testigo hash que expira después de un período de tiempo arbitrario. Utilizar esa señal como una búsqueda para recuperar información del perfil del usuario desde el servidor.

Usted todavía tenga problemas porque cualquier cosa que se hace del lado del cliente puede ser manipulado / hackeado. Si se mantiene toda la lógica en un servidor central, puede estar más seguro de que las cosas no van a ser roto, sin embargo el rendimiento del sistema se verá afectada.

Es necesario sopesar los pros y los contras de un servidor central para la seguridad y el rendimiento y selecciona un equilibrio que se adapte mejor para usted.

Otros consejos

No se puede modificar una constante (siempre) o de sólo lectura (después de la inicialización) variable, por lo que no va a funcionar.

La mejor opción sería probablemente para envolver la lógica que crea / inicializa / elabora esas variables en un método y / o propiedad limpia que se establece durante el proceso de inicio de sesión. Esto aislará ese código, por lo que es al menos fáciles de seguir.

En cuanto a la encriptación de cadenas - se puede utilizar SecureString para el manejo de este efecto en tiempo de ejecución. En tiempo de compilación, puede ofuscar su código (muchas ofuscadores admiten el cifrado de cadena).

Hay hay manera confiable que usted podría . Mediante la encriptación de las cosas que sólo puede hacer más difícil, pero nunca imposible. El peor caso, el usuario puede asociar un depurador y alterar la memoria directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top