Protezione dei database in stile documento (MongoDb, CouchDB, RavenDB) per il client (browser) accesso

StackOverflow https://stackoverflow.com/questions/3091956

Domanda

Documento database che supportano REST-style JSON su HTTP accesso sembra ideale per supportare le applicazioni AJAX-ricche in cui il browser sta facendo le chiamate dirette al database, bypassando i componenti logici del server web / applicazioni tradizionali. Un esempio di questo potrebbe essere recuperando le preferenze degli utenti una volta che un utente è stato autenticato. (BBC Homepage potrebbe essere un buon esempio di questo, prima di schiantarsi sotto il carico!)

Il problema con questo scenario è il problema di sicurezza - se un utente è autenticato utilizzando un server web (per esempio l'autenticazione di base forme), come è questo l'identità riportato al documento DB. È l'unica risposta a tutte le richieste di proxy al DB attraverso il server web in ogni caso -? Vale a dire fissare il documento DB in modo che non v'è alcun accesso esterno diretto

Questo sembra rendere più senso, ed è il più facile da implementare, ma mi chiedevo se qualcuno là fuori ha avuto un'esperienza consulenza e / o sull'utilizzo di DBS di documenti in un ambiente eterogeneo?

È stato utile?

Soluzione

Questo probabilmente si differenzia in tutti i database si parla. Ecco come funziona in CouchDB.

CouchDB consente di gestire utenti e ruoli.

È possibile utilizzare la funzione di validate_doc_update nei documenti di progettazione per limitare la creazione di documenti / aggiornamento. Ad esempio, è possibile scrivere una convalida che nega l'aggiornamento del documento a chiunque, ma il suo autore.

Per limitare chi può leggere i documenti da un database, è possibile modificare il documento /db_name/_security e l'elenco degli utenti o ruoli.

Tuttavia, non credo che si può fare l'accesso in lettura più granulare (vale a dire consentire a un utente di leggere solo i documenti che hanno creato).

Per ottenere questo, bisogna mettere la CouchDB dietro un proxy e utilizzare le viste per servire i documenti a utenti autenticati. È comunque possibile utilizzare CouchDB gestione degli utenti in questo modo. Il proxy nasconde solo l'accesso diretto al database.

Per informazioni più dettagliate, controllare il panoramica sulla sicurezza CouchDB wiki , il capitolo sicurezza del Relax libro e questo breve screencast .

Altri suggerimenti

Bene, ho solo esperienza con CouchDB, ma spero di poter aiutare comunque.

CouchDB ha un processo di validazione built-in, è scrivere le regole di validazione in javascript, e di avere accesso al gruppo in cui l'utente corrente è. E 'tutto gestito da CouchDB sé in fondo, non c'è bisogno di preoccuparsi di come si arriva a informazioni di accesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top