The-Dao
如何防禦重入攻擊
我研究了 DAO 攻擊。乙太坊的重入攻擊仍然有效。但乙太坊網路也仍然有效(當然,編譯器說“警告”)
你如何相信你的契約會是安全的?乙太坊如何修補這個錯誤?
以及如何在不呼叫回退功能的情況下將乙太幣發送給任何人?這是道攻擊的原因
乙太坊有好主意嗎?
我想讓你告訴我。
發送乙太時
使用
address.transfer
or是發送乙太幣address.send
的簡單且可重入安全的方式。使用
call.value
了更強大但也有重入風險的 TheDAO:call.value
是什麼意思,它是如何允許對 The DAO 的攻擊的?一般來說
當程式碼可以回調您的合約並更改狀態(例如提取乙太幣)時,可重入性是一個問題。
密切關注 Solidity 利用新操作碼
STATIC_CALL
(EIP 214)的通用解決方案:為了提高智能合約的安全性,該提案添加了一個新的操作碼,可用於呼叫另一個合約(或自身),同時不允許在呼叫期間對狀態進行任何修改(及其子呼叫,如果存在)。