web-dev-qa-db-fra.com

De quels mécanismes de sécurité dispose Meteor?

Nous savons tous que Meteor propose le pilote miniMongo qui permet au client d'accéder en toute transparence à la couche persistante (MongoDB).

Si un client peut accéder à l'API persistante, comment sécuriser son application?

Quels sont les mécanismes de sécurité fournis par Meteor et dans quel contexte doivent-ils être utilisés?

91
Olivier Refalo

Lorsque vous créez une application à l'aide de la commande meteor, par défaut, l'application inclut les packages suivants:

  • AUTOPUBLISH
  • PEU SÛR

Ensemble, ceux-ci imitent l'effet de chaque client ayant un accès complet en lecture/écriture à la base de données du serveur. Ce sont des outils de prototypage utiles (à des fins de développement uniquement), mais généralement pas adaptés aux applications de production. Lorsque vous êtes prêt pour la version de production, supprimez simplement ces packages.

Pour en ajouter plus, Meteor prend en charge les packages Facebook/Twitter/et bien plus pour gérer l'authentification, et le plus cool est le package Accounts-UI

64

Dans le doc collections dit:

Actuellement, le client dispose d'un accès en écriture complet à la collection. Ils peuvent exécuter des commandes de mise à jour Mongo arbitraires. Une fois l'authentification établie, vous pourrez limiter l'accès direct du client à l'insertion, à la mise à jour et à la suppression. Nous envisageons également des validateurs et d'autres fonctionnalités de type ORM.

35
pomber

Si vous parlez de restreindre le client à ne pas utiliser l'une de vos API d'insertion/mise à jour/suppression non autorisées, c'est possible.

Voir leur application todo sur https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos

De plus, ils ont maintenant ajouté un module AUTH intégré, qui vous permet de vous connecter et de vous inscrire. Donc, c'est sûr. Dans la mesure où vous vous occupez de XSS, des évaluations, des en-têtes de client, etc.

mais vous pouvez à tout moment convertir l'application météore en application nodejs pleinement opérationnelle en déployant sur le nœud. Donc, si vous savez comment sécuriser une application nodejs, vous devriez pouvoir sécuriser le météore.

5
Hitesh Joshi

Depuis la version 0.6.4, pendant le mode de développement, les blocs is_client et is_server vont toujours tous les deux au système client. Je ne peux pas dire si ceux-ci sont séparés lorsque vous désactivez le mode de développement.

Cependant, s'ils ne le sont pas, un pirate pourrait être en mesure d'obtenir des informations du système en examinant les blocs de code if (Meteor.is_server). Cela m'inquiète particulièrement, surtout parce que j'ai remarqué que je ne peux toujours pas à ce stade séparer les collections en fichiers distincts sur le client et le serveur.

Mise à jour

Eh bien, le fait est de ne pas mettre de code lié à la sécurité dans un bloc is_server dans un répertoire non serveur (c'est-à-dire - assurez-vous qu'il se trouve dans quelque chose sous le/serveur.

Je voulais voir si j'étais juste fou de ne pas pouvoir séparer les collections client et serveur dans les répertoires client et serveur. En fait, cela ne pose aucun problème.

Voici mon test. C'est un exemple simple du modèle de publication/abonnement qui semble bien fonctionner. http://goo.gl/E1c56

2
DrM