9 messaggi dal 07 novembre 2013
Ciao a tutti, non ho mai capito come nascondere le stringhe importanti tipo la "CHIAVE APPLICAZIONE" di un mobile service su azure che mi permette di connettermi al mio servizio su azure. L'esempio che fanno vedere è di creare un semplice oggetto statico in App.xaml.cs:
public static MobileServiceClient MobileService = new MobileServiceClient(
    "https://veth24.azure-mobile.net/",
    "jtYQIMfxuYERvHPIfeZLekAlTFJoyL97"
);


So che esistono molti modi per offuscare il codice, ma se non offuschi il codice dell'applicazione questa stinga la possono leggere tutti con reverse engineering?
Modificato da roaned il 23 luglio 2014 14.29 -
11.886 messaggi dal 09 febbraio 2002
Contributi
roaned ha scritto:

non ho mai capito come nascondere le stringhe importanti tipo la "CHIAVE APPLICAZIONE"

Non puoi. Dato che l'utente ha il controllo del sistema su cui gira il tuo programma, potenzialmente riuscirà a disassemblartelo e a scoprire la chiave. L'offuscamento non risolve il problema, ma si limita a rendere le cose un po' più difficili.
Non è un problema nuovo perché riguarda tutte le applicazioni client-server. E' sempre necessario proteggersi con della logica di validazione lato server, dove l'utente non può arrivare.

Se temi che il tuo servizio subisca degli abusi, dovresti consentire l'accesso solo a coloro che si sono autenticati.
http://azure.microsoft.com/en-us/documentation/articles/mobile-services-android-get-started-users/#permissions

A quel punto puoi mettere in piedi un sistema di throttling, per impedire che un dato utente possa inviare troppe richieste nell'unità di tempo. Non l'ho mai fatto ma penso che si riesca a fare abbastanza agevolmente via scripting sul backend.

Al raggiungimento di un certo volume di richieste, nega l'accesso o chiedi all'utente di risolvere un captcha.
Questo ti protegge un po' dall'eventualità che un utente scopra la tua API KEY e scriva un bot per automatizzare l'accesso al tuo servizio.

ciao,
Moreno
Modificato da BrightSoul il 24 luglio 2014 23.45 -

Enjoy learning and just keep making
9 messaggi dal 07 novembre 2013
Ah, non sapevo che anche l'offuscamento non ti aiutava per questo problema. Va beh niente conviene fare almeno con l'autenticazione. Grazie mille per la risposta :)
11.886 messaggi dal 09 febbraio 2002
Contributi
Ah, non sapevo che anche l'offuscamento non ti aiutava per questo problema.

Beh, un certo aiuto comunque te lo dà. Un codice offuscato è certamente meno decifrabile e scoraggia l'utente novizio che cerca di curiosare nei tuo assembly.
Tuttavia, essendo un sistema di sicurezza tramite segretezza, non puoi farci un affidamento assoluto.

Ora, già di suo WP8 è abbastanza sicuro e gli XAP che arrivano dallo store sono protetti da un sistema di DRM quindi penso che la tua API KEY sia ragionevolmente al sicuro.
Se la domanda è "come faccio a sapere che nessuno ruberà mai la mia API KEY?", la risposta è che non puoi esserne sicuro. I sistemi possono essere violati e perciò dovresti comunque mettere in piedi della logica di validazione lato server.

ciao,
Moreno
Modificato da BrightSoul il 25 luglio 2014 23.09 -

Enjoy learning and just keep making
9 messaggi dal 07 novembre 2013
Si si certo, se fai una cosa molto più seria e complicata alla fine ti devi fare il backend serio. Ma nel caso mio che ho un'applicazione banalissima e utilizzo un mobile service su azure, di cui ha 16k chiamate al giorno alle API del mio mobile service. Uno giusto per divertimento, con la api key può fare le 16k di chiamate e mi blocca il servizio, giusto? dici che devo pensare a questa possibilità o me ne frego e faccio finta di niente?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

roaned ha scritto:

Uno giusto per divertimento, con la api key può fare le 16k di chiamate e mi blocca il servizio, giusto?

Sì, anche se per arrivare a 16k di richieste al giorno uno dovrebbe mettersì lì con un picchio.
Il problema non è tanto il numero delle richieste, ma le informazioni che l'utente riesce ad ottenere da quelle richieste.
Ti faccio un esempio: le pagine gialle sono fatte in modo da agevolare un utente che ha bisogno di un dato servizio o prodotto. Questo elenco, ben organizzato, potrebbe anche essere (ab)usato per altri scopi meno nobili, tipo fare telemarketing senza consenso.

Ora, se tu vuoi tassativamente impedire l'abuso del tuo servizio, fai in modo sin da ora che un utente non possa mai inviare più di tot richieste nell'unità di tempo.
Io non so che tipo di applicazione stai realizzando, quindi non sono sicuro che si presti ad abusi. Mettiamo che sia un gioco: dopo 100 volte che un giocatore invia il suo punteggio alla leaderboard, io gli metterei comunque un messaggio tipo "Per favore, per oggi basta così, esci, è una bella giornata estiva".

Dipende dalla situazione, vedi tu. Potresti anche decidere di non far nulla per il momento, e prendere contromisure solo quando il problema si presenta. Sii comunque pronto a scalare il mobile service al livello di servizio successivo perché interrompere il funzionamento della tua applicazione non giova al giudizio che i tuoi utenti ne avranno.

ciao,
Moreno

Enjoy learning and just keep making
9 messaggi dal 07 novembre 2013
vero :D, ho perso di vista il vero problema. SI si, ora mi hai chiarito le idee. Completo tutto e poi pubblico, vedremmo poi che succede :). Grazie mille per l'aiuto sei stato molto utile

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.