Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器上的Meteor方法_Javascript_Jquery_Mongodb_Security_Meteor - Fatal编程技术网

Javascript 服务器上的Meteor方法

Javascript 服务器上的Meteor方法,javascript,jquery,mongodb,security,meteor,Javascript,Jquery,Mongodb,Security,Meteor,当我为集合编写meteor方法时,我通常将它们放在一个共享目录中,这样就可以在客户端上模拟它们,以获得更快的速度。但这是否安全?我应该将方法放在服务器目录中吗?如果是,应该放哪种方法?是。您可以使其安全,并为集合提供共享目录。Meteor延迟补偿功能只有在服务器和客户端都有集合时才起作用。 如果要为集合使用共享代码,则必须执行这些操作 删除不安全的自动发布包 使用 为每个集合配置规则 更多关于流星安全的信息。 一般情况下,流星号的工作原理并非如此。您应该只在客户端实现大多数收集方法(更新、插

当我为集合编写meteor方法时,我通常将它们放在一个共享目录中,这样就可以在客户端上模拟它们,以获得更快的速度。但这是否安全?我应该将方法放在服务器目录中吗?如果是,应该放哪种方法?

是。您可以使其安全,并为集合提供共享目录。Meteor延迟补偿功能只有在服务器和客户端都有集合时才起作用。 如果要为集合使用共享代码,则必须执行这些操作

  • 删除不安全的自动发布包
  • 使用
  • 为每个集合配置规则
更多关于流星安全的信息。

一般情况下,流星号的工作原理并非如此。您应该只在客户端实现大多数收集方法(更新、插入、删除),并检查服务器端的更新权限

如果您有一个包含一些帖子的集合,请不要调用('addNewPost',newPost)。在
addNewPost
meteor方法服务器端插入(…)。这将是RESTAPI的经典方式;但这是流星:)

您可以直接到客户端进行
发布。插入(…)
。这将立即显示在客户端,并尝试更新基本服务器端

然后在服务器端,您必须设置扩展权限:

Posts.allow({

    'insert': function(userId, doc) {
        // Check if the user exists
        // if he has the right to insert
        // if what he tries to insert is ok for you
        // ...
    },

    'update': function(userId, docs, fields, modifier) {
        // same, width the fields, the doc, the user...
    },

    'remove': function(userId, docs) {
        // same again
    }

});
您可以对集合执行的任何操作执行
allow()
deny()
。这可能看起来很奇怪,但这是良好延迟补偿的真正基础。如果您不知道如何设置所需的权限,则可能会违反HUDGE安全性。但如果你知道怎么做,绝对不会有安全问题

(我的建议是,除了你想允许的特定元素之外,什么都不要做)

因此:

  • 用户使用客户端方法更新其数据库客户端:myCollection.update()
  • 他看到了结果
  • meteor使用它的魔法将其发送到服务器
  • 服务器将检查这是否允许
  • 如果是,则写入base并发送给其他订阅者
  • 如果没有,则发送请求以恢复更改客户端

  • 谢谢,这样我就可以拥有共享方法了,而且它们仍然和纯服务器方法一样安全?请记住,共享代码也会发送到客户端,以便任何人都可以查看它。这取决于您要归档的内容。如果您询问Meteor.methods,请将其仅限于服务器。我正在谈论Meteor.methods,但我认为如果共享Meteor会更快,因为Meteor可以模拟该方法。我错了,您可以在客户端使用Meteor.methods。答案是安全吗?这取决于您要归档的内容。请始终记住,共享代码也会发送到客户端,以便任何人都可以查看。我的方法中没有任何密钥/令牌,因此,如果人们看到了这些方法,他们可以做什么?谢谢,我现在拥有对我所有集合的创建权限,以加强安全性,所以,我的方法是否是clientside和我是否有allow/deny并不重要?或者应该将它们移动到服务器目录以获得最大安全性我不知道是否会在客户端触发允许/拒绝系统。我的第一个猜测是否定的。我认为这是一个纯粹的服务器部分。我认为将这些元素添加到客户端代码只会给最终的客户端js添加fat。我已将允许/拒绝代码放在我的集合文件夹中,因此在客户端和服务器中共享,因此希望它应该在客户端和服务器中都运行