Todos sabemos que Meteor ofrece el controlador miniMongo que permite al cliente acceder sin problemas a la capa persistente (MongoDB).
Si cualquier cliente puede acceder a la API persistente, ¿cómo se asegura su aplicación?
¿Cuáles son los mecanismos de seguridad que proporciona Meteor y en qué contexto deben utilizarse?
Respuestas:
Cuando crea una aplicación usando el comando meteor, de forma predeterminada, la aplicación incluye los siguientes paquetes:
Juntos, estos imitan el efecto de que cada cliente tenga acceso completo de lectura / escritura a la base de datos del servidor. Estas son herramientas útiles para la creación de prototipos (solo con fines de desarrollo), pero normalmente no son adecuadas para aplicaciones de producción. Cuando esté listo para el lanzamiento de producción, simplemente elimine estos paquetes.
Para agregar más, Meteor admite paquetes de Facebook / Twitter / y Much More para manejar la autenticación, y el más genial es el paquete Accounts-UI
fuente
meteor remove autopublish insecure
.access denied
error. Echale un vistazo.En las colecciones, el documento dice:
fuente
Si está hablando de restringir al cliente para que no use ninguna de sus API de inserción / actualización / eliminación no autorizadas, eso es posible.
Vea su aplicación todo en https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos
Además, ahora han agregado un módulo AUTH integrado, que le permite iniciar sesión y registrarse. Entonces es seguro. En lo que respecta a XSS, Valiations, encabezados de cliente, etc.
pero cualquier día puede convertir la aplicación de meteoritos en una aplicación de nodejs completamente funcional mediante la implementación en node. Entonces, si sabe cómo proteger una aplicación nodejs, debería poder proteger meteor.
fuente
A partir de 0.6.4, durante el modo de desarrollo, los bloques is_client e is_server siguen yendo al sistema cliente. No puedo decir si están segregados cuando apagas el modo de desarrollo.
Sin embargo, si no es así, un hacker podría obtener información sobre el sistema revisando los bloques del código if (Meteor.is_server). Eso me preocupa particularmente, especialmente porque noté que todavía en este punto no puedo segregar Colecciones en archivos separados en el cliente y el servidor.
Actualizar
Bueno, el punto es que no coloque el código relacionado con la seguridad en un bloque is_server en un directorio que no sea del servidor (es decir, asegúrese de que esté en algo debajo de / server.
Quería ver si estaba loco por no poder segregar Colecciones de cliente y servidor en los directorios de cliente y servidor. De hecho, no hay ningún problema con esto.
Aquí está mi prueba. Es un ejemplo simple del modelo de publicación / suscripción que parece funcionar bien. http://goo.gl/E1c56
fuente