不要使用默认配置文件字段

当新用户注册时,默认添加一个名为 profile 的诱人现有字段。此字段历来用作用户特定数据的暂存区 - 可能是其图像头像,名称,介绍文本等。因此,每个用户的 profile 字段可由该用户从客户端自动写入。它也会自动发布给该特定用户的客户端。

事实证明,默认情况下可以写入字段而不会使其显得非常明显可能不是最好的主意。有很多关于新的 Meteor 开发者在 profile 上存储诸如 isAdmin 等字段的故事……然后恶意用户可以随时轻松地将其设置为 true,从而使自己成为管理员。即使你不关心这一点,让恶意用户在你的数据库中存储任意数量的数据也不是一个好主意。

而不是处理这个领域的细节,完全忽略它的存在可能会有所帮助。只要你拒绝来自客户端的所有写入,你就可以安全地执行此操作:

// Deny all client-side updates to user documents
Meteor.users.deny({
  update() { return true; }
});

即使忽略配置文件的安全隐患,将所有应用程序的自定义数据放在一个字段上也不是一个好主意。Meteor 的数据传输协议不会对字段进行深度嵌套,因此最好将对象展平为文档中的许多顶级字段。