我们都知道,Meteor提供了miniMongo驱动程序,该驱动程序无缝地允许客户端访问持久层(MongoDB)。
如果有任何客户端可以访问持久性API,那么如何保护其应用程序呢?
流星提供了哪些安全机制,应在什么情况下使用它们?
我们都知道,Meteor提供了miniMongo驱动程序,该驱动程序无缝地允许客户端访问持久层(MongoDB)。
如果有任何客户端可以访问持久性API,那么如何保护其应用程序呢?
流星提供了哪些安全机制,应在什么情况下使用它们?
Answers:
使用流星命令创建应用程序时,默认情况下,该应用程序包含以下软件包:
在一起,它们模仿了每个客户端对服务器数据库具有完全读/写访问权限的效果。这些是有用的原型制作工具(仅用于开发目的),但通常不适用于生产应用程序。准备好发布产品时,只需删除这些软件包即可。
要添加更多内容,Meteor支持Facebook / Twitter /和Much More软件包来处理身份验证,而最酷的是Accounts-UI软件包
meteor remove autopublish insecure
。
access denied
错误。看看这个。
在集合文档中说:
当前,客户端具有对该集合的完全写访问权限。他们可以执行任意的Mongo更新命令。建立身份验证后,您将能够限制客户端对插入,更新和删除的直接访问。我们还在考虑验证器和其他类似ORM的功能。
如果您正在谈论限制客户端不要使用任何未经授权的插入/更新/删除API,那是可能的。
在https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos上查看他们的待办事项应用程序
此外,他们现在还添加了内置的AUTH模块,可让您登录和注册。因此安全。就您所关心的XSS,Valiations,客户端标头等而言
但您随时可以通过部署到node将流星应用转换为可正常运行的nodejs应用。因此,如果您知道如何保护Node.js应用程序,则应该能够保护流星。
从0.6.4版本开始,在开发模式期间,is_client和is_server块仍然都进入客户端系统。当您关闭开发模式时,我不能说这些是否分开。
但是,如果不是这样,则黑客可以通过查看if(Meteor.is_server)代码块来从系统中获取洞察力。这尤其使我感到担忧,尤其是因为我指出,到目前为止,我仍然无法将Collection隔离到客户端和服务器上的单独文件中。
好吧,重点是不要将与安全相关的代码放在非服务器目录的is_server块中(即-确保它位于/ server下的某个目录中)。
我想看看是否只是无法在客户端和服务器目录中隔离客户端和服务器集合。实际上,这没有问题。
这是我的测试。这是发布/订阅模型的一个简单示例,似乎工作正常。 http://goo.gl/E1c56