Domanda

Ho un programma, e in quel programma non v'è alcune variabili (nome utente e "privilegio-level") che vengono modificati solo quando l'utente accede. C'è un modo per "garantire" questi varaibles dalla memoria di modifica ecc mentre il programma viene eseguito, ma il programma è ancora in grado di cambiare loro se l'utente accede con un altro nome utente.

Ho pensato che avrebbe funzionato (non ho ancora testato) per utilizzare const o di sola lettura, ma è ancora possibile cambiare quando le relogs utente?

Inoltre, è possibile hash / stringhe cifrare utilizzate nel programma, in modo che l'utente non è in grado di trovarli cercando la memoria (vale a dire utilizzando Cheat Engine)?

È stato utile?

Soluzione

Se le credenziali dell'utente e del software sono in esecuzione sul computer dell'utente, è impossibile per fermare l'utente di modificare i valori.

Se le credenziali e l'accesso sono memorizzati su un server remoto, è possibile utilizzare quel server e che l'utente memorizzare solo un token hash che scade dopo un periodo di tempo arbitrario. Utilizzare quella pedina come una ricerca per recuperare le informazioni del profilo dell'utente dal server.

Ci si può comunque incorrere in problemi perché tutto ciò che viene fatto sul lato client può essere manipolato / violato. Se si mantiene tutta la vostra logica su un server centrale, si può essere più sicuri che le cose non saranno incrinati, tuttavia le prestazioni del sistema ne soffrirà.

È necessario valutare i pro ei contro di un server centrale per la sicurezza e le prestazioni e scegliere un equilibrio che si adatta meglio per voi.

Altri suggerimenti

Non è possibile modificare un const (mai) o di sola lettura (dopo l'inizializzazione) variabile, in modo che non funzionerà.

L'opzione migliore sarebbe probabilmente per avvolgere la logica che crea / inizializza / configurare queste variabili in un metodo e / o di proprietà pulita che viene impostata durante il processo di accesso. Questo isolerà il codice, quindi è almeno facile da seguire.

Per quanto riguarda la crittografia stringhe - è possibile utilizzare SecureString per la gestione di tale scopo in fase di esecuzione. Al momento della compilazione, è possibile offuscare il codice (molti obfuscators supportano la crittografia stringa).

C'è alcun modo affidabile si potrebbe che . Crittografando la roba si può solo rendere più difficile, ma mai impossibile. Nel peggiore dei casi, l'utente può collegare un debugger e modificare direttamente la memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top