2

人々がクライアントでのデータアクセスを妨げているかどうか、またどのように妨げているのか疑問に思っていました. Meteor Apps を使用して 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 コレクションと deny コレクションは、非常に安全ではありません。そうです、誰でも利用可能なデータを編集することができます。また、Allow 関数を作成して、ユーザーがドキュメントをどのように操作するかを正確にチェックするのはあなた次第です。

ある段階で、Meteor にはスキーマ チェックなどの機能が組み込まれ、将来これをより簡単に実行できるようになると確信しています。今のところ、私が見つけた最も簡単でクリーンな方法は、クライアント側ですべてのサーバー側データベースのアクセス許可を取り消し、Meteor.calls ですべての書き込み操作を行い、その方法で独自の検証を行うことであると結論付けました。

于 2014-02-25T12:54:45.247 に答える