我想知道人们是否以及如何阻止客户端上的数据访问?是否有人关注能够使用Meteor Apps从JS控制台执行插入/更新/删除?
我发现这个article描述了如何限制客户端上的数据库访问,但它很老,不确定它是否仍然相关。他们将此描述为阻止客户端更新数据库的方法:
// Relies on underscore.js. In your project directory:
// $ meteor add underscore
Meteor.startup(function() {
var collections = ['collection_name_1', 'collection_name_2'];
_.each(collections, function(collection) {
_.each(['insert', 'update', 'remove'], function(method) {
Meteor.default_server.method_handlers['/' + collection + '/' + method] = function() {};
});
});
});
答案 0 :(得分:1)
Meteor账户系统自0.5.0以来一直在扩展。它提供了collection.allow
方法,允许您定义访问集合的限制。查看docs。
Meteor上的insecure
包允许所有客户编辑数据库中的任何集合。您需要确保meteor remove insecure
,这将默认拒绝所有客户端写入数据库。
parties示例截屏视频详细讨论了这一点。
答案 1 :(得分:1)
我最近问了一个类似的问题(What logic must I cover in Collection.allow and Collection.deny to ensure it's secure?)
我发现Meteor的允许和拒绝收藏是非常不安全的。你没错,任何人都可以编辑他们可用的数据。您可以编写Allow函数来正确检查用户如何操作文档。
在某个阶段,我确信Meteor将内置功能,如模式检查或其他任何可能在将来更容易做到这一点。现在,我已经得出结论,我发现最容易和最干净的事情就是撤消客户端的所有服务器端数据库权限,然后使用Meteor.calls完成所有写操作并按照自己的方式进行验证