Come posso proteggere un gestore di richieste in modo da rispondere solo ai client corretti?

0

Ecco lo scenario ...

Ho un sito web che ha un gestore generico scritto in asp.net (file .ashx) che accetta richieste HTTP, ottiene dati rilevanti, converte il risultato in xml e poi lo restituisce tramite la risposta.

Questo verrà eventualmente utilizzato in modo che un'applicazione Windows possa effettuare richieste di dati a questo sito Web.

La mia preoccupazione è che chiunque sappia come mettere insieme la richiesta possa accedere ai dati potenzialmente personali. I dati non sono qualcosa di così delicato come le informazioni finanziarie, ma avranno nomi e indirizzi, quindi ho ovviamente bisogno di pensare a metterlo al sicuro.

Il mio pensiero iniziale era quello di crittografare le informazioni prima di rispondere, e forse anche di crittografare la richiesta, e sono felice di farlo, ma volevo solo chiedere ad altri boffin la loro opinione in merito.

È qualcosa che ha un modo "standard" di farlo, o è semplicemente il caso di pensare a qualcosa di adatto e di implementarlo.

Per inciso, l'app di Windows sarà distribuita in tutto il paese, quindi le richieste arriveranno da molti posti. L'uso dell'indirizzo IP non è solo un modo laborioso di farlo, ma non aiuta in quanto potresti ovviamente inviare il messaggio da un IP senza usare l'applicazione.

TL; DR

Come faccio a verificare che fosse la mia app per Windows a chiedere informazioni sulla mia app Web?

    
posta Archer 10.07.2013 - 15:29
fonte

3 risposte

3

Se il tuo sito è accessibile solo dalla tua app, penso che il modo migliore sia usare un token crittografato con chiavi conosciute solo dalle due parti (sito web e app), il sito web controlla il token usando i tasti e risponde solo se il token è valido. E sì, dovresti anche criptare la risposta.

    
risposta data 10.07.2013 - 15:46
fonte
1

In cima alla mia testa, vedo due possibilità per autenticare la tua app client:

  • Utilizza un meccanismo di autenticazione standard (HTTP), possibilmente con un nome utente / password che sono hard-coded nel client.
  • Utilizzare una connessione SSL e richiedere al client di fornire un certificato client quando si stabilisce la connessione.
risposta data 10.07.2013 - 16:23
fonte
0

Se stai per creare un'app di Windows, dovresti essere in grado di memorizzare la chiave di crittografia nel registro. Quindi usa semplicemente quella chiave per crittografare tutto o parte del messaggio (possibilmente un campo personalizzato nell'intestazione). Si scrive la chiave del registro al momento dell'installazione, quindi non viene mai trasmessa e quindi non può essere intercettata. A seconda di come verrà distribuita la tua app, potresti persino generare chiavi separate per ciascuno dei tuoi utenti. Se gli utenti scaricano l'app, puoi crittografarla e inviarla via e-mail o mandare loro un messaggio di decrittografia, quindi anche se la chiave dell'app (all'interno dell'installer) è intercettabile, è comunque ragionevolmente sicura.

    
risposta data 10.07.2013 - 19:01
fonte

Leggi altre domande sui tag