meteor有什么安全机制?

我们都知道Meteor提供的miniMongo驱动程序可以无缝地让客户端访问持久层(MongoDB)。

如果任何客户端可以访问持久化API,那么如何保证他的应用程序?

meteor提供的安全机制是什么?在什么情况下应该使用?

当您使用meteor命令创build应用程序时,默认情况下该应用程序包含以下软件包:

  • 自动发布
  • 不安全

这些模仿在一起,模仿每个客户端对服务器的数据库具有完全读/写访问权限的效果。 这些是有用的原型开发工具(仅用于开发目的),但通常不适用于生产应用程序。 当您准备发布产品时,只需删除这些软件包即可。

为了增加更多,Meteor支持Facebook / Twitter /和更多的软件包来处理authentication,最酷的是Accounts-UI软件包

在收集文件说:

目前,客户端被授予对该集合的完全写入访问权限。 他们可以执行任意的Mongo更新命令。 一旦我们build立了身份validation,您将能够限制客户端直接访问插入,更新和删除。 我们也在考虑validation器和其他类似ORM的function。

如果您正在讨论限制客户端不要使用任何未经授权的插入/更新/删除API,那可能。

通过https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos查看他们的todo应用程序;

此外,他们现在添加了一个内置的AUTH模块,让您login和注册。 所以它的安全。 只要你正在照顾的XSS,价值观,客户端标题等

但您可以随时通过部署到节点,将meteor应用程序转换为完全正常工作的nodejs应用程序。 所以如果你知道如何保护一个nodejs应用程序,你应该能够保护meteor。

从0.6.4开始,在开发模式下,is_client和is_server块仍然都会进入客户端系统。 当你closures开发模式时,我不能说这些是否隔离。

但是,如果不是这样,黑客可能会通过查看if(Meteor.is_server)代码块来从系统中获得洞察。 这特别关注我,尤其是因为我注意到,我仍然无法将集合分离到客户端和服务器上的单独文件中。

更新

那么,关键是不要将安全相关的代码放在非服务器目录的is_server块中(也就是说 – 确保它在/ server下。

我想看看我是否能够在客户端和服务器目录中分离客户端和服务器集合。 其实这个没有问题。

这是我的testing。 这是一个简单的发布/订阅模式的例子,似乎工作正常。 http://goo.gl/E1c56