2011-09-07 23 views
7

Sto pensando di usare MongoDB come database principale. Tuttavia, la mia app è completamente in JavaScript e volevo utilizzare l'API REST, lato client.API REST MongoDB Authentication

Non riesco ancora a capire quali meccanismi di sicurezza è possibile utilizzare per fare effettuare una chiamata JS al database senza rivelare tutti i dati a tutti gli utenti .

Si prega di consulenza in merito.

saluti, Donald

+0

@Brain, come è che in qualche modo legato a questa domanda? AJAX è solo un modo per parlare in modo asincrono con altri servizi e non ha nulla a che fare con l'interfaccia REST di MongoDB o con la domanda. –

risposta

5

Prima di tutto, è possibile attivare autenticazione banca dati che renderà l'interfaccia REST richiede l'autenticazione se collegato a da un computer remoto.

Detto questo, è una pessima idea esporre il tuo database come suggerisci tu. Costruisci un livello di astrazione di persistenza in una tecnologia server che ti piace (node.js per esempio) e applica tutti i vincoli di sicurezza e l'autenticazione. I vantaggi sono numerosi:

  • È possibile mantenere stabile l'API anche se si modifica il MongoDB. Puoi persino sostituirlo con un'altra soluzione di persistenza, se necessario nella maggior parte dei casi.
  • È possibile limitare il carico che un singolo client può inserire nel proprio database. Se esamini direttamente il database, c'è pochissimo che puoi fare per evitare che persone facciano query costose o addirittura danneggino le scritture.
  • Spesso è possibile eseguire operazioni di caching e ottimizzazione intelligenti sul lato dell'app che non è possibile se ogni client accede direttamente al database (ciò dipende un po 'dall'app in questione).
+0

Perché è pericoloso? In che modo è diverso da CouchDB che ha già un'interfaccia REST? – BluePython

+0

L'interfaccia REST non è pericolosa (anche se un potenziale problema di prestazioni) ma l'esposizione di un'interfaccia di database (RESTful o meno) direttamente ai client introduce quasi sempre il rischio. –

2

Check out Sleepy.Mongoose, è un'interfaccia API REST per MongoDB. Non l'ho provato, ma sembra supportare l'autenticazione standard MongoDB.

+1

Perché le persone affrontano tutti questi problemi invece di usare CouchDB o perché MongoDB non ha un'interfaccia REST API standard? Quali sono i vantaggi di non farlo? – BluePython

1

MongoLab ha l'hosting di database MongoDB con un'API REST a cui è possibile accedere dal lato client, anche attraverso alcuni esempi basati su jQuery nella relativa documentazione di supporto. Detto questo, Remon ha ragione nel sacrificare qualsiasi sicurezza, perché stai rendendo pubblica la tua chiave API.

0

RESTHeart è un'API Web per MongoDB.

Fornisce l'autorizzazione e l'autenticazione a livello di applicazione.

Verificare la sezione documentazione security.

anche alcuni esempi di applicazioni sono disponibili su GitHub: