遇到DoS攻击时,易受攻击的服务器将无法响应正常的用户请求。一些服务器可以在攻击停止后立即或在一段时间后恢复到正常状态,而另一些服务器将完全崩溃并需要重新启动。 无法使用区块链浏览器会给用户带来很大的困扰。因为用户无法轻易的获取有关链上活动的信息。此外,在基于Cosmos的链上,如果节点遭受DoS攻击,不仅连接的区块链浏览器无法从该节点获取数据,用户也无法使用API执行诸如发送代币或将代币委托给验证者的操作。 建议 任何应用程序都存在被DoS攻击的威胁,世界上不存在一种解决方案可以完美的防范DoS攻击。但有些方法可以用来增加攻击成本从而使潜在的攻击者难以执行攻击操作,并降低区块链浏览器应用中的存在漏洞的概率。 在这里,CertiK技术团队列出了一些建议,以最大程度地减少应用程序被攻击的机率: 1.速率限制 即使后端API在实现上足够安全,攻击者也可以通过向服务器发送大量请求来进行攻击。因此,API在任何情况下都应该设置速率限制来暂时或永久屏蔽恶意IP。 虽然速率限制并不能完全解决问题,但操作起来相对便捷,可以构成针对DoS攻击的第一道防线。 2.改良设计和实现 良好的程序设计和代码实现能在相同的硬件条件下表现出更好的性能,这种效果在与数据库搜索和数据处理相关的功能方面表现得更加突出。但是在考虑性能之前,首先要确保代码没有错误。 因此,在API部署到生产环境前编写单元测试上投入大量时间是非常值得的,以此来确保它们能够按预期工作。 3.输入验证和参数限制 不对用户提供的变量进行验证和限制,那么攻击者就可以滥用API。 在确定代码能够按预期工作之后,下一步要做的是确保攻击者不能利用非常规的输入滥用API。类似于获取9999999区块的数据或处理1000级循环的GraphQL查询的请求不应该被允许。 因此,所有用户输入均应被视为不可信的,服务器应在处理用户输入之前对其进行验证。 在上文提到的案例中,GraphQL API可以设置最大层数限度以有效防御循环查询的DoS攻击,而块数据获取API则可以将最大块数限制为像50这样的合理数值。 开发人员可以根据代码实现和程序设计,总结出最合适当前程序的的输入验证和限制的方案。 4.不要暴露节点RPC 并非所有API的代码实现都在开发人员的控制之下。 比如,开发人员并不推荐去改Cosmos RPC API的代码。Cosmos SDK中某些搜索查询的性能不是很好,那么该怎么办? (责任编辑:admin) |