2015-04-21 17 views
7

Sto scrivendo il client per la mia applicazione web e ho firmato il rilascio jar con il mio certificato sviluppatore, come posso verificare che la richiesta per il servizio di ripristino provenga dal mio contenitore firmato?Verificare le richieste http dal contenitore firmato

+13

Non è possibile. Chiunque possegga il barattolo firmato può smontarlo e, quindi, scoprire come fingere tali richieste. Potresti renderlo più difficile con l'offuscamento statico o dinamico, ma questo solleva un po 'l'ostacolo. Se invece provi a difendersi dagli attaccanti senza accesso al tuo barattolo, quel barattolo potrebbe includere una chiave privata da usare per firmare le richieste del servizio di riposo. – mkl

+3

Qual è il problema di fondo che stai cercando di risolvere? Se modifichi la tua domanda per includerla, potremmo essere in grado di suggerire una soluzione alternativa. – merlin2011

+6

@mkl ha ragione. Qualsiasi servizio che è pubblicamente raggiungibile e che qualcuno può ottenere per un cliente può essere decodificato, e con il cliente in mano, non c'è modo di impedire a qualcuno di trovare la chiave privata o altri meccanismi di mantenimento segreto. In generale, cerca di non preoccuparti troppo di ciò che * l'applicazione * sta inviando richieste al tuo servizio; preoccuparsi di ciò che * utente * sta inviando loro. Se sono loggato e autenticato, non dovrebbe importare se utilizzo il tuo client personalizzato o telnet. –

risposta

6

Non è possibile. La firma è per la convalida dell'esecuzione che significa che è sul lato server. Ma vuoi controllare la firma sulla richiesta http/rest sul lato client. Il lato client non ha tale convalida.

È possibile aggiungere qualcosa alla risposta stessa e convalidarla sul lato client ma, di nuovo, nulla impedisce ad altri server di inviare lo stesso valore e quindi fingere di essere il proprio server.

È inoltre possibile aggiungere alcune caratteristiche di comportamento al proprio contenitore (come i cookie di sessione) ma, ancora una volta, nulla impedisce ad altri vasi di emularlo.