Say I have a RESTful web service and a commercial Android app on the front end which is used to interact with it. I may use SSL so that the endpoints are not visible, but someone could still do some reverse engineering to find them.
SSL non nasconde l'indirizzo IP di destinazione, quindi non hanno nemmeno bisogno di decodificare nulla. Tutto il resto può essere ottenuto tramite il certificato Fiddler + MITM.
I could also use SOAP instead, so that the call to the web service is a bit more complicated. But, I still don't know if this gives me any real advantage over RESTful based service.
Bene, più sforzi esegui, più lo sforzo che un hacker dovrà effettuare, suppongo.
Detto questo, gli hacker hanno molto più tempo libero di te, e ce ne sono molti, e solo uno di loro deve pubblicare la soluzione su una bacheca elettronica ed è game over.
Quindi, probabilmente non ne vale la pena.
I was thinking about hardcoding the key into my client app, so that only my client app could use the service. Also, maybe some code obfuscation may help. But, how much does this really help?
Gli hacker ora hanno strumenti di deobfuscation a portata di mano, quindi non sono d'aiuto come prima.
Probabilmente non ne vale la pena.
Fiddler could be used to decrypt https and see the full request. However, if I use Android app only, this may be solved by hardcoding server certificate in Android client app. And also, there is SOAP WS-Security, but I guess a tool can be made to function in similar way as fidler to circumvent that.
L'hacker potrebbe decodificare tutto molto più rapidamente di quanto potresti crearlo.
Quindi, probabilmente non ne vale la pena.
You can't stop a hacker from reverse engineering any code that runs on the client. So whatever safeguards you put in, the hacker can imitate them.
Esattamente. Non perdere tempo su questo.
Invece, prova a progettare la tua applicazione in modo che le funzionalità sensibili siano eseguite sul server, dove puoi proteggerlo.
Passa il resto del tuo tempo a migliorare le funzionalità della tua app in modo che i clienti non vogliano nient'altro.