流星的包装是否合适:autoform不安全?

时间:2016-10-07 21:21:19

标签: meteor meteor-autoform

在我学习流星的过程中,过去几周试图通过一些验证来构建一个简单的问题我偶然发现了什么。

直到今天,我一直试图将我的Collection Schema保留在服务器端,并且在客户端上渲染Schemas服务器验证时遇到了一些困难,所以我添加了alerced:autoform。

当我开始使用autoform时,在出现一些错误之后,我很惊讶地意识到要在客户端定义Collection的Schema HAD才能正常工作。

这看起来有点危险吗?您的馆藏架构是否应在客户端上发布?

这可能是一个愚蠢的问题,我不确定。我提前道歉:D

1 个答案:

答案 0 :(得分:0)

您需要定义架构,以便客户端和服务器代码都可以访问它。这是因为,表单验证在客户端完成一次(应始终将其视为不安全,因为它在浏览器控制台中可用,如下所示),一次在服务器端。服务器端验证始终被视为安全。因此,即使您设法通过任何方式从浏览器操作表单,如果验证不符合架构,它也会在服务器端过滤掉,只要架构附加到集合< / strong>即可。我相信这是安全的。

enter image description here

Meteor autoform page建议你删除不安全的内容并添加允许/拒绝规则。

  

如果您愿意,请务必为不受信任的代码定义正确的插入安全性   删除了insecure包。呼叫允许/拒绝或使用   ongoworks:security

我遵循的步骤是为了保证安全(请注意,可能有更好的方法,因为我对流星宇宙也很新)

  1. 删除自动发布和不安全。
  2. 使用允许/拒绝规则定义架​​构。
  3. 使用流星服务器方法插入/更新。
  4. 无论您是使用附加到集合或架构的架构来验证表单而不是真的希望它附加到集合,请确保在服务器代码上调用[check()][4]以便一次性如果表单在客户端提交给服务器,则服务器进一步明确地检查数据是否仍然符合模式,并且没有任何人被不信任的人注入/篡改。 如果操作它,服务器端验证会自动过滤掉传递给它的数据的额外添加
  5. 如果有人添加了不存在/符合模式定义的额外数据,会发生这种情况:

    enter image description here