Sicurezza in un servizio Web privato

2

Sto sviluppando un sito web e un servizio web per un piccolo gioco online. Tecnicamente, userò Express (node.js) e MongoDB + Redis per i database. Questa è la struttura che mi è venuta in mente:

  • Un server Express che funzionerà come servizio Web. Questo si collegherà ai database.
  • Un server Express che fornirà il sito web. Si collegherà al servizio Web per recuperare e inviare le informazioni.
  • Le applicazioni iOS e Android saranno in grado di interagire con il WebService.

Prendendo in considerazione:

  • È un piccolo gioco. Le informazioni trasferite non sono critiche.
  • NON ci saranno applicazioni di terze parti. Almeno per il momento.

La mia preoccupazione riguarda il livello di sicurezza che dovrei usare in ciascuno degli scenari:

  • Sicurezza dell'utente che gioca attraverso il browser web
  • Sicurezza delle applicazioni e del server Web che si connettono al WS.

Ho dato un'occhiata alle diverse opzioni e:

  • OAuth e / o Https è troppo per questo scenario, vero?
  • Sarà una buona opzione per cancellare l'utente e la password con MD5 (o simile) e un po 'di sale?

Vorrei ottenere alcune indicazioni e investigare da solo piuttosto che ottenere una risposta del tipo "dovresti usare questo modulo node.js ..."

Grazie in anticipo,

    
posta Oni 28.03.2012 - 22:59
fonte

1 risposta

1

Mi trovo di fronte a un problema simile, quello a cui sto pensando è che ogni richiesta sia firmata dopo l'autenticazione, simile a OAuth, e un layout simile al seguente.

{"header":{...},"content":{...}}

L'intestazione conterrà un token di autenticazione e un hash della firma del contenuto + un segreto condiviso ...

L'hash per il contenuto sarà semplice nella sezione del contenuto che include da "{" a "}" come codificato JSON, e inviato ... per i casi di valori di caratteri alti, devono essere sfuggiti tramite \ u ### # in modo che siano presenti solo valori ascii a 7 bit. (qualsiasi cosa < u0032 con \ x ## e maggiore di u0127 sarà preceduta da un escape con \ u ####) La stringa JSON risultante, con solo i caratteri a 7 bit, sarà abbastanza semplice da avere una firma coerente ..

Mantenendo l'intestazione separata dal contenuto, assicurerà che il contenuto sia firmato correttamente e riduca i problemi di codifica e la complessità di solito visti nelle implementazioni OAuth ... poiché OAuth è molto ampio. YMMV, ma spero che questo aiuti.

    
risposta data 28.03.2012 - 23:13
fonte

Leggi altre domande sui tag