91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

会昌县| 蓝田县| 安化县| 龙游县| 澄迈县| 白河县| 昭平县| 长岛县| 衡水市| 石屏县| 临沂市| 临潭县| 信丰县| 贵定县| 鄂托克旗| 金堂县| 墨江| 克山县| 衡山县| 双柏县| 呈贡县| 东乡族自治县| 醴陵市| 沙坪坝区| 托克逊县| 忻州市| 紫云| 沿河| 自治县| 石屏县| 汉川市| 安溪县| 鄂托克前旗| 屏东县| 柳州市| 尉氏县| 徐水县| 怀集县| 唐山市| 始兴县| 宣化县|