網站首頁 教育 學前教育 精緻生活 飲食養生 命理 科普教育 金融 歷史 影視 數碼 熱門資訊
當前位置:生活百科站 > 科普教育 > 

Solidity常見的安全問題有哪些?

欄目: 科普教育 / 釋出於: / 人氣:2.04W
Solidity常見的安全問題有哪些?

Solidity常見的安全問題具體如下:

1、外部呼叫未檢查。

在2018年Solidity十大安全問題榜單上未檢查的外部呼叫是第三個常見問題。目前前兩個都已經解決了,因此未檢查的外部呼叫成為了2020年更新列表中最常見的問題。

Solidity 底層呼叫方法,(例如 ())不會丟擲異常。而是在遇到錯誤,返回 false。

如果使用合約呼叫 mething()時,如果 doSomething()丟擲異常,則異常會繼續“冒泡”傳播。

2、高成本迴圈。

高成本迴圈從Solidity安全榜單的第四名上升到了第二名。受該問題影響的智慧合約數量增長大約30%。

使用者都知道,以太坊上的運算是需要付費的。因此,減少完成操作所需的計算,不僅僅是優化問題(效率),還涉及到成本費用。

3、權力過大的所有者。

這是Soldiity十大安全問題新出現的問題,該問題影響了約大概16%的合約,某些合約與其所有者(Owner)緊密相關,某些函式只能由所有者地址呼叫。

4、算術精度問題。

由於使用 256 位虛擬機器(EVM),Solidity 的資料型別有些複雜。 Solidity 不提供浮點運算, 並且少於 32 個位元組的資料型別將被打包到同一個 32 位元組的槽位中。

5、依賴 in。

智慧合約不應該依賴於 in 進行身份驗證,因為惡意的合約可能會進行中間人攻擊,然後耗盡所有資金,建議改用 er。

6、溢位(Overflow / Underflow)。

Solidity 的 256 位虛擬機器存在上溢位和下溢位問題。在for迴圈條件中使用uint資料型別時,開發人員務必要小心,因為它可能導致無限迴圈。

7、不安全的型別推導。

該問題在 Solidity 十大安全問題排行榜中也上升了兩位,現在影響到的智慧合約比之前超了17%以上。

Solidity 支援型別推導,但有一些奇怪的表現。例如,字面量0會被推斷為byte型別,而不是通常期望的整型。

8、不正確的轉賬。

此問題在 Solidity 十大安全問題榜單中從第六位下降到了第八位,目前影響不到1%的智慧合約。

在合約之間進行以太幣轉賬有多種方法。雖然官方推薦使用 sfer(x) 函式,但我們仍然找到了還在使用 send()函式的智慧合約。

9、迴圈內轉帳。

當在迴圈體中進行以太幣轉賬時,如果其中一個轉賬失敗(例如,一個合約不能接收),那麼整個交易將被回滾。

10、時間戳依賴。

在 2018 年,時間戳依賴問題排名第五,重要的是要記住,智慧合約在不同時刻多個節點上執行的。以太坊虛擬機器(EVM)不提供時鐘時間,並且通常用於獲取時間戳的 now 變數(stamp 的別名)實際上是礦工可以操縱的環境變數。

Tags:Solidity