中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

东乌| 蓬溪县| 天峻县| 原阳县| 浠水县| 恩施市| 茌平县| 怀来县| 类乌齐县| 诸城市| 永城市| 斗六市| 洪江市| 乌拉特中旗| 巴楚县| 凤台县| 宜良县| 台南县| 乌拉特后旗| 湛江市| 内江市| 和政县| 馆陶县| 牡丹江市| 德州市| 龙门县| 屯昌县| 沾益县| 开江县| 鄂州市| 南漳县| 丰镇市| 历史| 水富县| 通化县| 永仁县| 保康县| 嵊泗县| 比如县| 永安市| 什邡市|