Di quali meccanismi di sicurezza dispone Meteor? [chiuso]


92

Sappiamo tutti che Meteor offre il driver miniMongo che consente al client di accedere senza problemi al livello persistente (MongoDB).

Se un cliente può accedere all'API persistente, come si protegge la sua applicazione?

Quali sono i meccanismi di sicurezza forniti da Meteor e in quale contesto dovrebbero essere utilizzati?


6
Mi piace che questo sia già stato affrontato, ma avrebbero dovuto menzionarlo nel video. Penso che praticamente qualsiasi sviluppatore web che lo guarda avrà questa domanda in mente a partire da 10 secondi fino alla fine, e si sente solo infastidito dal fatto che per un prodotto così fantastico SEMBRA che ignorino completamente l'ovvio problema di sicurezza.
Naatan

6
Meteor 0.5.0 ha aggiunto l'autenticazione dell'utente meteor.com/blog/2012/10/17/…
hipertracker

Potresti riformularlo un po 'per riaprirlo. Forse "Quali misure di sicurezza dovrei prendere?" o "Quali opzioni di sicurezza sono disponibili?"
joeytwiddle

1
Basato sull'opinione? Wat? Penso che questo sia stato un audit riaperto poiché ovviamente non è basato sull'opinione.
bjb568

Sono d'accordo, la sentenza basata sull'opinione è fuori contesto: le risposte si basano su fatti veri.
Olivier Refalo

Risposte:


64

Quando crei un'app utilizzando il comando meteor, per impostazione predefinita l'app include i seguenti pacchetti:

  • AUTOPUBBLICA
  • INSICURO

Insieme, questi imitano l'effetto di ogni client che ha pieno accesso in lettura / scrittura al database del server. Questi sono utili strumenti di prototipazione (solo per scopi di sviluppo), ma in genere non appropriati per applicazioni di produzione. Quando sei pronto per il rilascio di produzione, rimuovi semplicemente questi pacchetti.

Per aggiungerne altri, Meteor supporta i pacchetti Facebook / Twitter / e molto altro per gestire l'autenticazione, e il più interessante è il pacchetto Accounts-UI


2
Corretto a partire da meteor 0,5
Olivier Refalo

5
Insicuro per impostazione predefinita. Yikes.
Judah Gabriel Himango

16
@JudahHimango insicuro solo a scopo di test e rimuovere quei due pacchetti quando sei pronto per la produzione è facile come meteor remove autopublish insecure.
BenjaminRH

1
E i metodi meteorologici? Il client può accedere a quelli dalla console anche con una disinstallazione non sicura, perché vengono eseguiti sul server. Come si possono renderli sicuri?
Matanya

2
@Matanya ma dopo l'uso e l'esecuzione di quelli dalla console, verrà access deniedgenerato un errore. Controlla.
Ajduke

35

Nelle collezioni il doc dice:

Attualmente al client viene concesso l'accesso completo in scrittura alla raccolta. Possono eseguire comandi di aggiornamento Mongo arbitrari. Una volta creata l'autenticazione, sarai in grado di limitare l'accesso diretto del client per inserire, aggiornare e rimuovere. Stiamo anche considerando validatori e altre funzionalità simili a ORM.


1
Vedi anche questo thread su Quora con una risposta da uno degli sviluppatori di Meteor: quora.com/Meteor-web-framework/Whats-cool-about-Meteor/answer/…
dentarg

1
@jonathanKingston il collegamento è interrotto, potresti aggiornarlo per favore?
Carlos Barcelona

@CarlosBarcelona Il dominio è scaduto e l'articolo era precedente agli aggiornamenti di sicurezza in Meteor. Penso che sia giusto dire che era obsoleto; quindi ho rimosso il commento per far risparmiare tempo alle persone. Grazie
jonathanKingston

5

Se stai parlando di limitare il client a non utilizzare nessuna delle tue API di inserimento / aggiornamento / eliminazione non autorizzate, è possibile.

Guarda la loro app todo su https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos

Inoltre, ora hanno aggiunto un modulo AUTH integrato, che ti consente di accedere e registrarti. Quindi è sicuro. Per quanto riguarda XSS, valutazioni, intestazioni dei clienti ecc.

ma puoi convertire in qualsiasi giorno l'app meteor in un'applicazione nodejs completamente funzionante distribuendola su node. Quindi, se sai come proteggere un'applicazione nodejs, dovresti essere in grado di proteggere meteor.


1
Questo è completamente vero a partire da settembre 2012
Olivier Refalo,

2

A partire dalla 0.6.4, durante la modalità di sviluppo, i blocchi is_client e is_server vanno ancora entrambi al sistema client. Non posso dire se questi sono separati quando disattivi la modalità di sviluppo.

Tuttavia, se non lo sono, un hacker potrebbe essere in grado di ottenere informazioni dal sistema rivedendo i blocchi del codice if (Meteor.is_server). Ciò mi preoccupa particolarmente, soprattutto perché ho notato che ancora a questo punto non riesco a separare le raccolte in file separati su client e server.

Aggiornare

Bene, il punto è non mettere il codice relativo alla sicurezza in un blocco is_server in una directory non server (cioè - assicurati che sia in qualcosa sotto il / server.

Volevo vedere se ero solo pazzo per non essere in grado di separare le collezioni client e server nelle directory del client e del server. In effetti non ci sono problemi con questo.

Ecco la mia prova. È un semplice esempio del modello di pubblicazione / sottoscrizione che sembra funzionare bene. http://goo.gl/E1c56


1
La soluzione sarebbe salvare il codice nel server / cartella - in questo modo non viene inviato al client.
Olivier Refalo

DrM, vedere docs.meteor.com/#structuringyourapp - il codice sensibile non deve essere consegnato al client
emgee

Prova qualcosa di semplice; crea una raccolta in un file server, quindi crea la stessa raccolta nel file client e dimmi cosa succede. Successivamente, crea un file radice con la dichiarazione della raccolta, quindi fai semplicemente riferimento a quello in un file di directory server e client e dimmi cosa succede. Se non puoi creare la raccolta, come io non potrei, come puoi fare riferimento a questi in modo indipendente? Alla fine, è necessario che il riferimento alla raccolta esista nello stesso file disponibile del client e utilizzare is_server e is_client. Spero di sbagliarmi, ma non ho ancora scoperto come o perché.
DrM

Hmm, strano, il test sembra andare bene, aggiornerà la risposta
DrM

Il collegamento è un repository di codice semplice, ma sembra funzionare bene, non sono sicuro di quali siano stati gli strani errori in passato o di come potrei ricrearli.
DrM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.