【问题标题】:How to secure blueprint access in Sails.js如何在 Sails.js 中保护蓝图访问
【发布时间】:2015-08-29 21:06:08
【问题描述】:

所以我对 Sails.js 还是很陌生,但它似乎带来了很多东西,比如这些蓝图,

现在我有 2 个模型,Accounts / Friends

它使用关联,因为Accounts 有很多Friends

在我的客户端,我有一种向用户发送通知的方法,一种是好友请求,这样可以正常工作,它为用户提供了接受或拒绝邀请的选项

代码如下:

socket.on('accounts', function(data) {
    if (data.verb === "addedTo" && data.attribute === "notifications") {
      socket.get('/notifications/' + data.addedId, function(note) {
        console.log(note);
        if (!$.isEmptyObject(note)) {
          $scope.notifications.push({
            'text': note.from_name + ' sent you a friends request',
            'id':   note.id,
            'type': note.type,
            'from_id': note.from_id
          })
          $.notify('You have a new notification', 'info');
          $scope.$digest();
        }
      })
    }
  })

$scope.accept = function(notificationId, fromId) {

}

当人们按下接受按钮时,我想为接受通知的人和发送通知的人添加一个朋友,这样它是相互的并且他们都是彼此的朋友。

我可以简单地做到这一点,方法是创建一个数据对象并对他们俩的朋友执行socket.post,然后执行socket.put 将通知更新为正在读取并处理它

唯一的问题是,我不希望人们进来打开JS控制台和垃圾邮件socket.post百万朋友给人们恶意

var obj {
  'friend_name': 'Bill',
  'online': 1
}

socket.post('/accounts/1/friends', obj);

那么,我怎样才能保护它,以便访问 post/accounts/1/friends 的人只有应该访问它的人?

如果我没有意义,请问。谢谢!

垃圾邮件示例:

有人打开 JS 控制台就走了

var obj = { friend_name: 'bill', owner: 1 }; io.socket.post('/friends', obj);

现在id 1 的帐户有 500 次有 500 个朋友叫 bill

【问题讨论】:

  • 您能否提供一个真实的此类垃圾邮件示例,socket.post。我无法理解您的问题。
  • @HristoEnev 添加检查底部

标签: javascript node.js sockets sails.js


【解决方案1】:

如果我误解了什么,请纠正我,但我认为你的逻辑是错误的。

我假设 Bill 也是一个帐户,但是当您只添加他的姓名时,您与他的帐户信息没有任何联系,并且只能通过姓名来识别他。为了进行某种验证,您将需要 Bill 的唯一标识符。您可以添加account_idowner,而不是名称。

所以如果有 3 个帐户:

  1. 克里斯
  2. 比尔

您将添加var obj = { account_id: 2, owner: 1 };

这样您就可以在添加新朋友之前与policies 核对是否已经存在具有account_id 和所有者的朋友。如果您对如何使用政策有任何疑问,请直接询问。

无论如何,我认为更好的方法是只拥有一个模型,并仅与该模型建立many to many 关系。通过 Sails 将创建的第三个表(即您的朋友表),帐户将与自身建立多对多关系。这样,在新表中,您将有两列包含帐户 ID。如果假设在第一行您有 ids 1 和 2,这意味着 Chris 和 Bill 都是朋友,您可以考虑一些逻辑来确保行始终是唯一的,这样您就不会遇到垃圾邮件的问题。只是为了记录,我没有与一个模型建立多对多的关系,所以你必须弄清楚它是如何完成的。

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 2013-08-15
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2013-02-09
    • 1970-01-01
    相关资源
    最近更新 更多