客户应该保护自己免受服务器错误

时间:2015-02-13 17:07:50

标签: architecture protocols server

我有一个与客户端和服务器之间的体系结构和协议相关的一般性问题。 我们有一个包含服务器和许多客户端的大型系统,该系统在客户端和服务器之间同步文件。在服务器端,我们对来自客户端的输入进行了大量检查,以防止意外行为。 但我们的客户不检查来自服务器的消息(该检查可能导致性能问题) 例如,如果服务器发送到客户端消息删除文件,我们只是删除该文件,而不是确保(双重检查)服务器上的状态(我们有一个案例,删除发送给客户端,因为在服务器端)

所以我的问题是客户端应该保护自己免受服务器错误的影响吗? 如果您回答该问题,请提供相关论文/网站的链接。

只是要明确服务器和客户端之间的所有通信都使用https协议保护,包括客户端证书,所以问题只是关于错误而不是攻击

谢谢

2 个答案:

答案 0 :(得分:1)

通常,服务器可以是第三方提供的服务,例如Google Docs,并且您无法控制。

即使在我拥有服务器的情况下,我也会花更多的精力在其他替代方案上,比如对服务器功能进行大量测试,进行逻辑删除而不是物理删除等,而不是对性能进行额外的打击,但是这取决于你准备了多少妥协。

如果在多个客户端上获得性能并保持逻辑是值得的,那么删除一些重要文档并且永远不会恢复,那么您总是可以做出选择。

PS:我没有任何证明文件。

答案 1 :(得分:0)

在寻找答案后,我开始阅读“按合同设计”。 来自wikipidia的wiki

Contract conditions should never be violated during execution of a bug-free program. Contracts are therefore typically only checked in debug mode during software development. Later at release, the contract checks are disabled to maximize performance.

In many programming languages, contracts are implemented with assert. Asserts are by default compiled away in release mode in C/C++, and similarly deactivated in C#/Java. This effectively eliminates the run-time costs of contracts in release.

还有一篇关于按合同here

设计的精彩帖子

总结一下,我们需要在调试模式下而不是在发布模式下检查服务器“错误”