Come proteggete le stringhe nel codice dagli utenti che le decompilano e le vedono [duplicate]

1

Per un esempio, diciamo che abbiamo un'applicazione come un'applicazione basata su client che si connette a un'API usando una chiave API. Stiamo dicendo che per questo scopo non esiste OAuth. Come sarebbe una stringa o in questo esempio una chiave API essere nascosta dal client. Per essere utilizzato deve essere nel codice che si trova sul lato client. Come manteniamo la stringa al sicuro? Se gli utenti decompilano il codice, potrebbero trovare la chiave.

Questo è un esempio molto semplice con soluzioni come il server che schiera la connessione, ma in generale come si proteggono le stringhe che devono essere presenti nel codice. La deobfuscazione è un dolore.

    
posta ComputerLocus 04.03.2014 - 16:49
fonte

2 risposte

3

In breve: non puoi.

Finché qualcuno ha la copia locale e la copia locale è in grado di recuperare questa chiave, allora qualcuno potrebbe decodificare e ottenerlo. Se qualcuno avesse tentato di nascondere o offuscare il loro codice, avrei semplicemente fatto il programma in tempo reale o tramite IDA Pro. Se ad un certo punto memorizzi la tua chiave in una variabile, la prenderò in memoria. Se ti affidi ad una sorta di algoritmo, eseguirò il reverse-engineering di una versione funzionante osservando come lo fai.

Lascia che ti faccia un esempio. Esiste una chiave RSA sulla console Xbox 360 per proteggere i contenuti creati sulla console come i giochi di salvataggio. Sia le chiavi private che quelle pubbliche sono state memorizzate nel kernel e la RAM è stata completamente crittografata. Ci è voluto molto tempo, ma qualcuno è stato finalmente in grado di decodificare il kerner abbastanza per conoscere l'intera struttura del file, come sono stati creati i blocchi SHA e in grado di afferrare le chiavi private e pubbliche di RSA. Ci sono voluti molto più tempo da quando il sistema era sicuro, ma erano ancora in grado di ottenerlo. Dalla console di Microsoft.

L'unico vero modo per nascondere qualcosa è fare il lavoro su qualcosa di cui ti fidi, ovvero il server.

    
risposta data 04.03.2014 - 18:20
fonte
-1

se la tua app è basata sul web, puoi utilizzare una chiamata ajax per impedire che la tua chiave API venga visualizzata nell'url, altrimenti se è un'app desktop puoi memorizzare la tua API KEY in un file o in un database, quindi riprendere quando devi effettuare una chiamata alla tua API

    
risposta data 04.03.2014 - 18:10
fonte

Leggi altre domande sui tag