区块链DAPP安全标准的一些建议

本文的目的是强调安全问题,并为 DApp 开发人员提供必要的信息,以安全地启动他们的项目或减轻可能发生的任何问题。

常规注意事项

没有什么是绝对安全的。没有单一的通用方法足以确保软件安全。系统必须依赖多种安全增强方法。安全性增强实践应用越多越好。任何形式的验证、安全审计、开发更好的编程语言、智能合约的可升级性或任何其他措施都不能保证软件实现的绝对安全。声称某一方提供的服务可以保证 DApp 的完全安全,这要么是一个神话,要么是一个谎言,要么是一个营销举措。

安全改进方法和措施的组合可以显著降低 DApp 被黑客攻击的风险。每个安全改进策略都会引入一个新的安全层,强烈建议使用多个 “安全层”。将重点放在系统容错上,而不是试图使其不可破坏,可能会更好。在 DApp 中,容错是指 DApp 在检测到恶意活动时进行修复/调试的能力。在评价安全增强方法时,安全审计虽然是最昂贵的方法,但却是最有效的方法之一。

安全改进实践

开发人员为了提高 DApp 的安全性,必须考虑的最常见的措施:

  • 开发开源应用程序。使您的应用程序开源可以提高安全性,并确保执行诸如 “BUG赏金” 等安全增强方法的能力,这些方法进一步提高了系统的总体安全性。有一种误解认为对公众隐藏系统的源代码可以防止缺陷和漏洞被利用。这种误解被称为通过模糊实现的安全性。
  • 安全审计。安全审计是由第三方专家或安全专家团队对智能合约代码进行的同行审查。这被证明是最有效的方法之一,因为它可以覆盖任何类型的逻辑和特定于应用程序的错误。有专门的公司为智能合约开发人员提供安全审计服务。
  • 漏洞报告奖励。BUG 奖励是将源代码发布给社区评审,并为报告发现的漏洞或缺陷提供奖励的做法。如果处理得当,漏洞奖励也是确保系统安全性的一种非常有效的方法。发现漏洞的奖励必须与审阅者所执行的工作量相匹配,并且在审阅者决定利用漏洞而不是报告漏洞的情况下,必须与可能造成的损害程度相匹配。
  • 自动化异常检测。在 DApp 中,异常检测是智能合约的一个特殊功能,当智能合约中出现不想要的行为时,会自动触发对策/报警。在某些情况下,可以预测哪种行为是恶意的,并实现一个 “检测功能” 和 “合同禁用触发器”。例如,如果你开发了一个应用,一个玩家连续赢了 30 次,那么很明显他可能是在作弊,就需要进一步调查。禁用智能合约可能是值得的,这样可以防止恶意玩家在利用合约漏洞的情况下耗尽智能合约。异常检测可以作为一种看门狗服务实现,由第三方链外服务操作,而不需要在智能合约逻辑中实现。这种方法的有效性取决于智能合约开发人员确定哪种活动应该被视为 “异常” 的能力。这种方法对于防止特定于应用程序的故障非常好,但仅靠它是不够的。这种做法应与其他安全改进措施结合使用。
  • 手工测试和测试网部署。尽可能的测试你的软件。让智能合约开发人员和所有团队成员亲自尝试系统。在测试网络发布一个系统版本,让社区使用几个月,然后再发布最终版本。这肯定会减少软件最终版本中出现漏洞的风险。这不是一种充分的安全改进方法,但它足够廉价和有效。
  • 自动化测试。自动化测试或单元测试涉及到开发一个特殊的软件,该软件将与 DApp 交互,以便检测任何缺陷并确保 DApp 对任何类型的输入的响应的正确性。这种方法的有效性显然取决于测试软件实现的正确性。一般来说,自动化测试是一种辅助工具,可以减少安全审计员/社区评审员/软件测试人员的开销。自动化测试可以覆盖一般软件实用程序的常规案例,但在识别逻辑错误/业务模型缺陷或任何其他特定于应用程序的潜在威胁方面,它被证明是糟糕的。自动化测试并不是确保整个系统安全的可靠措施。这些程序必须结合使用,并与其他安全增强程序一起使用。
  • 形式化验证形式化验证很像自动化测试,是减少软件测试人员/审计人员/开发人员开销的另一种方法。这在某些情况下是有帮助的,但形式验证不是确保系统安全的充分的方法,不能完全依赖。
  • 遵循良好的编程实践。安全性并不是一个新的编程领域,有许多众所周知的、被广泛采用的方法和实践已经经过了时间的证明。坚持编码标准。注释你的代码。强烈建议合约开发人员阅读他们打算使用的平台的编码标准描述。建议您阅读大型编程社区所采用的令人尊敬的编码标准,如 GNU coding Standard。这是非常重要的,它不仅仅是一个偏好的问题!编码标准的目的是使代码片段所表示的逻辑尽可能简单明了,这大大提高了审计人员/软件测试人员/代码审查人员识别和报告系统缺陷的能力,且代码的可读性更好。
  • 尽可能使应用程序模块化。遵循软件开发的这种方法将提高代码的可审核性。这也增加了审计和测试的有效性。与面向对象的实践相反,过程式编程语言可能很难做到这一点。然而,将程序划分为独立的模块可以更好地测试/调试和每个模块的独立审计。这也提高了系统的可升级性,这对容错很重要。

我们在开发 DApp 项目时,应结合项目自身的情况,考虑应用以上几种安全措施的组合来让我们开发的 DApp 足够安全。尤其是哪些涉及到资金转账的项目,因为一个恶意漏洞被利用可能会让你遭受严重的损失。

猜你喜欢

转载自blog.csdn.net/zyq55917/article/details/124733497