为什么我会使用check()而不是Match.test()?

时间:2016-03-15 16:58:08

标签: javascript security meteor

在生产透视图中,我使用我的方法对发送到服务器的每个数据字段进行客户端检查(类型,长度,正则表达式等)。当然,我会在相关方法中仔细检查服务器上的所有内容。

考虑到每个类型或格式错误案例都应该由客户端代码处理,我认为在服务器上,最好是安静地处理错误而不是抛出一个明确的错误:数据必然来自原始客户端代码已被篡改(如果我的所有客户端检查都没问题)。在实践中,我会使用Match.test()(安静地)而不是check()(错误抛出)

如果这种错误应该先在客户端上标记出来,那么每次在服务器上发生服务器错误时,这是​​一个很好的做法吗?如果没有,为什么?

此外,我考虑跟踪这些安静的错误并自动阻止或标记重复超过x次的帐户。这是一个好主意吗?

1 个答案:

答案 0 :(得分:0)

你是对的,服务器永远不应该throw服务器上的显式异常而不处理它 - 这将导致你的服务器崩溃,并且它将是一个很好的拒绝服务所有人。

但是,服务器应该仍然能够使用400类HTTP错误消息通知用户数据是否格式错误。在处理用户输入的数据时,安全性和用户友好性都是必须考虑的因素 - 对于不受信任的客户端和速度慢的服务器,两个层都应该具有提供它们的机制。