當前位置:維知科普網 >

科普

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

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

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 的別名)實際上是礦工可以操縱的環境變量。

標籤: Solidity
  • 文章版權屬於文章作者所有,轉載請註明 https://wzkpw.com/kp/m626lx.html