市值: $2.6437T 0.10%
體積(24小時): $40.0551B -59.47%
恐懼與貪婪指數:

68 - 貪婪

  • 市值: $2.6437T 0.10%
  • 體積(24小時): $40.0551B -59.47%
  • 恐懼與貪婪指數:
  • 市值: $2.6437T 0.10%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

如何保護您的智能合約免受重入攻擊?

Reentrancy vulnerabilities arise when external calls precede state updates, enabling malicious recursive calls—mitigated by Checks-Effects-Interactions, ReentrancyGuard, and cautious gas limits.

2026/01/23 10:39

了解重入漏洞

1. 重入攻擊利用外部合約在初始函數執行完成之前回調到易受攻擊的合約的能力。

2. 當狀態更改在外部調用之前未最終確定時,就會發生這種情況,從而允許惡意代碼重複操縱餘額或標誌。

3. 2016 年臭名昭著的 DAO 黑客事件展示了遞歸提款模式如何耗盡價值超過 6000 萬美元的 ETH。

4. 此類漏洞在處理轉賬、提款或任何涉及外部調用和狀態更新的邏輯的函數中大量出現。

5. 0.8.0 之前的 Solidity 版本缺乏內置的重入防護,這使得手動保護對於遺留部署至關重要。

檢查-效果-交互模式的實現

1. 該架構規則要求所有內部狀態修改發生在任何外部交互之前。

2. 例如,更新用戶餘額必須先於呼叫轉移呼叫另一個地址。

3. 違反此命令將為攻擊者劫持控制流並重新進入同一功能打開大門。

4. 即使排序正確,開發人員也必須驗證沒有中間函數(例如事件發射器或修飾符)觸發意外的外部調用。

5. 像 Slither 和 MythX 這樣的工具可以在字節碼和源代碼的靜態分析過程中檢測到與此模式的偏差。

使用 ReentrancyGuard 修飾符

1. OpenZeppelin 的ReentrancyGuard是一個經過廣泛審核的實用程序,它使用布爾標誌鎖定函數。

2. 修飾符在執行前將_status設置為_ENTERED ,並在完成後將其重置為_NOT_ENTERED

3. 由於活動鎖,任何嘗試重新進入同一受保護函數的嵌套調用都將恢復。

4. 除非所有敏感入口點共享相同的防護實例,否則它不會阻止跨功能重入。

5. 開發人員必須確保繼承層次結構正確初始化保護狀態並避免隱藏內部變量。

Gas 限製作為緩解策略

1. 明確限制在call.gas(2300)等低級調用中轉發的 Gas 可以防止接收者合約執行複雜的邏輯。

2. 該技術模仿了sendtransfer的 Gas 津貼,將執行限制為 2300 Gas。

3. 然而,僅僅依靠 Gas 限制是脆弱的——未來的 EVM 升級或自定義操作碼可能會不可預測地改變 Gas 成本。

4. 它還破壞了與需要超過最少 Gas 來實現回退邏輯的合約的兼容性,例如執行日誌記錄或重新平衡的合約。

5. 基於氣體的緩解措施應該補充而不是取代結構性保障措施,例如重入防護和國家命令。

常見問題解答

問:視圖或純函數中可以發生重入嗎?答:不能。這些函數不能執行狀態改變操作或外部調用,從而消除了遞歸干擾的可能性。

問:使用 delegatecall 是否可以防止重入?答:不是天生的。雖然delegatecall保留調用者的存儲上下文,但如果目標邏輯包含不受保護的外部交互,它不會阻止可重入模式。

問:應付回退功能總是危險的嗎?答:僅當它執行狀態更新或外部調用而沒有重入保護時。在沒有副作用的情況下接受 ETH 的最小回退帶來的風險可以忽略不計。

問:可升級的代理模式是否會增加重入風險?答:是的,如果實施合約缺乏適當的保護,並且代理在未經驗證的情況下轉發調用,攻擊者可能會同時利用代理邏輯和業務邏輯。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

如何查看DOGE期貨成交量及持倉量?

如何查看DOGE期貨成交量及持倉量?

2026-09-12 08:39:38

了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...

如何查看BTC期貨交易量及持倉量?

如何查看BTC期貨交易量及持倉量?

2026-09-12 15:19:55

BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...

如何看懂DOGEUSDT永續合約圖表?

如何看懂DOGEUSDT永續合約圖表?

2026-09-11 19:19:48

了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...

如何閱讀幣安上的ETHUSDT期貨圖表?

如何閱讀幣安上的ETHUSDT期貨圖表?

2026-09-13 05:20:26

Bitcoin 減半機制1. 每產生 21 萬個區塊,Bitcoin 個礦工的區塊獎勵減半。 2. 此事件大約每四年發生一次,並被硬編碼到 Bitcoin 的協定中。 3. 最近一次減半將每個區塊的獎勵從 6.25 BTC 減少到 3.125 BTC。 4. 總供應上限仍固定在 2,100 萬 BT...

如何在幣安查看BTC合約資金費用?

如何在幣安查看BTC合約資金費用?

2026-09-10 08:00:06

找到資金費率顯示1. 進入幣安合約交易介面,選擇BTCUSDT永續合約。 2. 觀察價格圖表正下方或訂單簿附近的區域-該區域包含一個標有資金費率的標籤框。 3. 顯示數值即時更新,反映目前每小時的資金費率,無論是正數或負數。 4. 點選資金費率方塊將開啟一個彈出窗口,顯示多個結算週期的歷史資金價值。...

如何查看ETHUSDT期貨強平價格?

如何查看ETHUSDT期貨強平價格?

2026-09-13 16:00:00

了解 ETHUSDT 期貨清算機制1. ETHUSDT期貨的強力平價由入場價格、槓桿水準、持股規模及維持保證金比例共同決定。與現貨交易不同,期貨部位具有強制性保證金要求,該要求隨著未平倉合約和市場波動而變化。 2. 系統使用標記價格而非最新成交價格來評估強平風險。標記價格包含來自多個交易所的 ETH...

如何查看DOGE期貨成交量及持倉量?

如何查看DOGE期貨成交量及持倉量?

2026-09-12 08:39:38

了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...

如何查看BTC期貨交易量及持倉量?

如何查看BTC期貨交易量及持倉量?

2026-09-12 15:19:55

BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...

如何看懂DOGEUSDT永續合約圖表?

如何看懂DOGEUSDT永續合約圖表?

2026-09-11 19:19:48

了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...

如何閱讀幣安上的ETHUSDT期貨圖表?

如何閱讀幣安上的ETHUSDT期貨圖表?

2026-09-13 05:20:26

Bitcoin 減半機制1. 每產生 21 萬個區塊,Bitcoin 個礦工的區塊獎勵減半。 2. 此事件大約每四年發生一次,並被硬編碼到 Bitcoin 的協定中。 3. 最近一次減半將每個區塊的獎勵從 6.25 BTC 減少到 3.125 BTC。 4. 總供應上限仍固定在 2,100 萬 BT...

如何在幣安查看BTC合約資金費用?

如何在幣安查看BTC合約資金費用?

2026-09-10 08:00:06

找到資金費率顯示1. 進入幣安合約交易介面,選擇BTCUSDT永續合約。 2. 觀察價格圖表正下方或訂單簿附近的區域-該區域包含一個標有資金費率的標籤框。 3. 顯示數值即時更新,反映目前每小時的資金費率,無論是正數或負數。 4. 點選資金費率方塊將開啟一個彈出窗口,顯示多個結算週期的歷史資金價值。...

如何查看ETHUSDT期貨強平價格?

如何查看ETHUSDT期貨強平價格?

2026-09-13 16:00:00

了解 ETHUSDT 期貨清算機制1. ETHUSDT期貨的強力平價由入場價格、槓桿水準、持股規模及維持保證金比例共同決定。與現貨交易不同,期貨部位具有強制性保證金要求,該要求隨著未平倉合約和市場波動而變化。 2. 系統使用標記價格而非最新成交價格來評估強平風險。標記價格包含來自多個交易所的 ETH...

看所有文章

User not found or password invalid

Your input is correct