智能合约漏洞
1. 重入攻击 (Reentrancy Attack)
// 易受攻击的代码
function withdraw() public {
uint balance = userBalances[msg.sender];
require(balance > 0);
(bool success, ) = msg.sender.call{value: balance}(""); // Interaction
require(success);
userBalances[msg.sender] = 0; // Effect (Too late!)
}
// 安全代码
function withdraw() public {
uint balance = userBalances[msg.sender];
require(balance > 0);
userBalances[msg.sender] = 0; // Effect
(bool success, ) = msg.sender.call{value: balance}(""); // Interaction
require(success);
}2. 整数溢出与下溢 (Integer Overflow/Underflow)
3. 短地址攻击 (Short Address Attack)
4. 依赖时间戳 (Timestamp Dependence)
5. 权限控制不当 (Access Control Issues)
6. 其它常见漏洞
最后更新于