亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

visibility指定符不當使用導致Dapp漏洞的示例分析

發布時間:2022-01-18 14:33:23 來源:億速云 閱讀:92 作者:柒染 欄目:互聯網科技

這篇文章主要為大家分析了visibility指定符不當使用導致Dapp漏洞的示例分析的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“visibility指定符不當使用導致Dapp漏洞的示例分析”的知識吧。

Solidity函數有visibility指定符,標明函數如何被允許訪問。Visibility決定一個函數是否能被用戶,被其他派生合約,從外部調用,僅從內部調用等等。有4個visibility指定符.函數默認的visibility指定符是public – 允許用戶外部調用。visibility 指定符的不正當使用可能導致災難性的漏洞。

攻擊原理

函數默認的visibility指定符是public。沒有指定函數visibility指定符的話,那就被認定是public,意味著該函數就會允許外部用戶調用。當開發程序員對本應該是private(只能從合約內部訪問調用)的函數錯誤的沒有指定visibility指定符,就會引入漏洞。請看下面的例子:

contract HashForEther {

   

    function withdrawWinnings() {

        // Winner if the last 8 hex characters of the address are 0.

        require(uint32(msg.sender) == 0);

        _sendWinnings();

     }

    

     function _sendWinnings() {

         msg.sender.transfer(this.balance);

     }

}

這個簡單的合約是一個猜地址獲取獎勵的游戲。用戶必須生成一個以太坊地址,如果它的16進制的后8位都是0,就可以贏得游戲。一旦贏得游戲,他們就可以通過調用WithdrawWinnings()函數來獲得獎勵。但是,很不幸,函數的visibility并沒有被指定,特別是_sendWinnings() 函數是public 并且任何地址都可以調用這個函數來偷取獎勵。

防護技術

在智能合約編程的時候,最好給所有函數來指定函數的visibility,即使他們是intentionally public. 最近的Solidity版本加入了對未顯式指定visibility指定符的編譯警告。

關于“visibility指定符不當使用導致Dapp漏洞的示例分析”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 芦山县| 姚安县| 铜梁县| 新绛县| 双城市| 北川| 泾阳县| 松滋市| 明光市| 湟中县| 沐川县| 太和县| 武宣县| 滨海县| 通州区| 郧西县| 安多县| 鄂托克旗| 新宁县| 红河县| 庆阳市| 五河县| 邻水| 呈贡县| 犍为县| 碌曲县| 清水河县| 信阳市| 临桂县| 化州市| 长葛市| 周口市| 桐城市| 万年县| 响水县| 绍兴县| 巴里| 锦州市| 文水县| 二手房|