客户端可以访问Meteorjs模型/集合。安全问题?

时间:2012-05-04 15:09:46

标签: meteor

如何防止用户访问/修改客户端模型/集合?

2 个答案:

答案 0 :(得分:7)

使用allowdeny来定义允许每个客户端进行哪些数据库更改。

来自文档:

  

当客户端调用插入,更新或删除集合时,将在服务器上调用集合的allow和deny回调以确定是否应该允许写入。如果至少有一个允许回调允许写入,并且没有拒绝回调拒绝写入,则允许写入继续。

     

仅当客户端尝试直接写入数据库时​​才会运行这些检查,例如通过从事件处理程序内部调用update。服务器代码是受信任的,不受允许和拒绝限制。这包括使用Meteor.call调用的方法 - 它们应该进行自己的访问检查,而不是依赖于允许和拒绝。

     

您可以根据需要多次调用allow,每次调用都可以包含insert,update和remove函数的任意组合。如果他们认为应允许操作,则函数应返回true。否则他们应该返回false,或者什么也不返回(undefined)。在这种情况下,Meteor将继续搜索该集合的任何其他允许规则。

答案 1 :(得分:2)

正如马特所说,不再需要解决问题。但是作为标准,似乎需要删除autopublish包以保护系统。 Meteor文档涵盖了保护馆藏:http://docs.meteor.com/#meteor_collection