2

我想知道人们是否以及如何阻止客户端上的数据访问?人们是否关心能够使用 Meteor 应用程序从 JS 控制台执行插入/更新/删除?

我发现这篇文章描述了如何限制客户端上的数据库访问,但它已经很老了,不确定它是否仍然相关。他们将此描述为一种防止客户端更新数据库的方法:

// 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() {};
        });
    });
});
4

2 回答 2

1

Meteor 帐户系统自 0.5.0 起已扩展。它提供了一种collection.allow方法,允许您定义访问集合的限制。检查文档

Meteor 上的insecure包允许所有客户端编辑数据库中的任何集合。您需要确保meteor remove insecure,这将默认拒绝所有客户端写入数据库。

各方示例截屏视频详细讨论了这一点。

于 2013-03-07T05:01:28.853 回答
1

我最近问了一个类似的问题(我必须在 Collection.allow 和 Collection.deny 中涵盖哪些逻辑以确保其安全?

我发现 Meteor 的允许和拒绝集合非常不安全。你是对的,任何人都可以编辑他们可用的数据。您可以自行编写 Allow 函数来正确检查用户可能如何操作文档。

在某个阶段,我确信 Meteor 将内置诸如模式检查之类的功能,或者将来可能更容易做到这一点。现在,我已经得出结论,我发现的最简单和最干净的事情就是撤销客户端的所有服务器端数据库权限,并使用 Meteor.calls 执行所有写入操作,并以这种方式进行我自己的验证

于 2014-02-25T12:54:45.247 回答