Web3 开发系列教程—创建你的第一个智能合约智能合约存在的安全挑战
Posted 前端修罗场
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web3 开发系列教程—创建你的第一个智能合约智能合约存在的安全挑战相关的知识,希望对你有一定的参考价值。
与更传统的编程语言的大多数案例不同,Solidity 合约倾向于转移大量价值作为其核心功能之一,因此容易受到攻击者的各种高风险攻击,这些攻击者试图从这些不可变的参与者身上榨取资金。
因此,强烈建议开发人员在向主网启动智能合约之前进行审计或聘请审计机构。因为一旦发布,就很难追溯修复安全漏洞!
潜在漏洞的类型以及执行这些攻击的方式本身就是一个完整的过程。 下面我会快速概述一下可能存在的主要漏洞,以便你了解需要注意的事项:
重入攻击(Reentrancy)
什么是重入攻击:
如果一个计算机程序或子程序在执行过程中被中断,然后在前一次调用完成之前可被安全地再次调用,则称之为可重入。
这种类型的攻击非常危险,可以让易受攻击的智能合约耗尽所有的以太币,并且非常容易意外提交。 重入攻击的发生是因为 Solidity 的两个关键特性:
- 智能合约强制执行——也就是说,它们在执行下一行之前会等待每一行完成。
- 智能合约可以调用外部的、不受信任的合约并在继续之前等待结果。
因此,当一个易受攻击的合约 A 对另一个不受信任的合约 B 进行外部调用时,另一个合约 B 可能被恶意更改为对原始合约 A 进行递归调用。如果从合约 A 到 B 的调用涉及发送 任何数量的以太币,这个无限循环都可以在函数完成之前有效地耗尽合约 A 的所有
以上是关于Web3 开发系列教程—创建你的第一个智能合约智能合约存在的安全挑战的主要内容,如果未能解决你的问题,请参考以下文章
Web3 开发系列教程—创建你的第一个智能合约与智能合约交互
Web3 开发系列教程—创建你的第一个智能合约什么是智能合约
Web3 开发系列教程—创建你的第一个智能合约将你的智能合约与前端集成
Web3 开发系列教程—创建你的第一个智能合约将你的智能合约发布到 Etherscan