在生产透视图中,我使用我的方法对发送到服务器的每个数据字段进行客户端检查(类型,长度,正则表达式等)。当然,我会在相关方法中仔细检查服务器上的所有内容。
考虑到每个类型或格式错误案例都应该由客户端代码处理,我认为在服务器上,最好是安静地处理错误而不是抛出一个明确的错误:数据必然来自原始客户端代码已被篡改(如果我的所有客户端检查都没问题)。在实践中,我会使用Match.test()
(安静地)而不是check()
(错误抛出)
如果这种错误应该先在客户端上标记出来,那么每次在服务器上发生服务器错误时,这是一个很好的做法吗?如果没有,为什么?
此外,我考虑跟踪这些安静的错误并自动阻止或标记重复超过x次的帐户。这是一个好主意吗?
答案 0 :(得分:0)
你是对的,服务器永远不应该throw
服务器上的显式异常而不处理它 - 这将导致你的服务器崩溃,并且它将是一个很好的拒绝服务所有人。
但是,服务器应该仍然能够使用400
类HTTP错误消息通知用户数据是否格式错误。在处理用户输入的数据时,安全性和用户友好性都是必须考虑的因素 - 对于不受信任的客户端和速度慢的服务器,两个层都应该具有提供它们的机制。