【问题标题】:Node.js and mongoose - prevent salt and password to return to clientNode.js 和 mongoose - 防止盐和密码返回客户端
【发布时间】:2017-08-09 20:25:01
【问题描述】:

我有一个带有猫鼬的 node.js 应用程序。我的问题是,当返回具有填充用户的实体时,用户数据包括安全数据,如盐、令牌和密码。我使用以下方法来防止私有数据返回客户端:

User.methods.toJSON = function() { // Do not change to lambda expression
	const SERVER_ONLY_PROPERTIES = ['tokens', 'salt', 'password'];
	var user = this.toObject();
	
	SERVER_ONLY_PROPERTIES.forEach(propKey => {delete user[propKey]});
	return user;
}

一切都很好,直到我在我的代码中使用了 lean() 函数。 使用精益时,不会调用 toJson 方法,并且私有数据会返回给客户端。我有什么选择?

【问题讨论】:

  • 那么不要使用lean()。并在查找时使用select 仅选择您想要的字段。
  • 其他开发人员可能会使用精益方法。我不认为他们会在一年内记住这一点。它有风险

标签: node.js security mongoose


【解决方案1】:

与其取出不想返回的东西,不如使用一个过程来构建一个新对象以返回,该对象明确地只包含必要的数据片段。如果我没记错的话,这是安全方面的最佳做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2012-07-07
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多