为什么要`check()`客户端Blaze模板数据参数?

时间:2018-03-16 14:03:00

标签: security meteor meteor-blaze javascript-injection

我非常理解为什么你会check()方法和出版物参数服务器,但为什么你需要在客户端数据时,考虑到它可能在每个级别都被篡改?

我看到那是别人的代码,我想知道是否有充分的理由。

例如:

Template.MyTemplate.onCreated(function() {

  check(this.data.arg1, String);
  check(this.data.arg2, String);

  this.subscribe('mysub', this.data.arg1);
});

1 个答案:

答案 0 :(得分:2)

你可以(应该)这样做

  • 在重构会话后强制执行一致的行为(如果更改了模板输入的名称或类型,则会抛出错误)

  • 与其他开发人员一起工作时强制执行所需的模板数据,以便在输入错误输入模板时出错

  • 在创建许多互相交互的复杂模板时强制执行所需的模板数据,与上面的点基本相同

  • 在客户端创建第一个输入过滤器,例如当此模板需要用户输入作为其订阅的参数时(注意,这不是安全功能,但它可以改善UX)

将此与UI测试结合使用,以便在代码更改后揭示错误并使您的UI更加健壮。

当然你可以让check退出并让错误抛出到其他地方的组件代码中,但是你可以在创建级别上立即隔离错误。