Todos nós sabemos que o Meteor oferece o driver miniMongo que permite ao cliente acessar a camada persistente (MongoDB).
Se algum cliente pode acessar a API persistente, como alguém protege seu aplicativo?
Quais são os mecanismos de segurança que o Meteor fornece e em que contexto eles devem ser usados?
Respostas:
Quando você cria um aplicativo usando o comando meteoro, por padrão, o aplicativo inclui os seguintes pacotes:
Juntos, eles imitam o efeito de cada cliente ter acesso total de leitura / gravação ao banco de dados do servidor. Essas são ferramentas de prototipagem úteis (apenas para fins de desenvolvimento), mas normalmente não são apropriadas para aplicativos de produção. Quando estiver pronto para o lançamento de produção, basta remover esses pacotes.
Para adicionar mais, o Meteor suporta os pacotes Facebook / Twitter / e Much More para lidar com a autenticação, e o mais legal é o pacote Accounts-UI
fonte
meteor remove autopublish insecure
.access denied
erro. Confira.Nas coleções, o documento diz:
fonte
Se você está falando sobre restringir o cliente a não usar nenhuma de suas APIs de inserção / atualização / exclusão não autorizadas, isso é possível.
Veja o aplicativo de tarefas deles em https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos
Além disso, eles agora adicionaram um módulo AUTH integrado, que permite fazer login e registrar-se. Portanto, é seguro. Desde que você esteja cuidando de XSS, Valiations, cabeçalhos de cliente, etc.
mas você pode a qualquer dia converter o aplicativo meteoro em um aplicativo nodejs totalmente funcional implantando no node. Portanto, se você sabe como proteger um aplicativo nodejs, deve ser capaz de proteger o meteoro.
fonte
A partir de 0.6.4, durante o modo de desenvolvimento, os blocos is_client e is_server ainda vão para o sistema cliente. Não posso dizer se eles são separados quando você desliga o modo de desenvolvimento.
No entanto, se não forem, um hacker pode ser capaz de obter uma visão do sistema revisando os blocos do código if (Meteor.is_server). Isso me preocupa particularmente, especialmente porque observei que ainda não consigo separar as Coleções em arquivos separados no cliente e no servidor.
Atualizar
Bem, a questão é não colocar o código relacionado à segurança em um bloco is_server em um diretório que não seja do servidor (ou seja, certifique-se de que esteja em algo sob / server.
Eu queria ver se eu estava louco por não ser capaz de separar as coleções de cliente e servidor nos diretórios de cliente e servidor. Na verdade, não há problema com isso.
Aqui está meu teste. É um exemplo simples do modelo de publicação / assinatura que parece funcionar bem. http://goo.gl/E1c56
fonte