bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

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

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

超過十多年行業經驗,技術領先,服務至上的經營模式,全靠網絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業務范圍包括了:成都網站建設、成都網站制作,成都網站推廣,成都網站優化,整體網絡托管,小程序制作,微信開發,成都app軟件開發公司,同時也可以讓客戶的網站和網絡營銷和我們一樣獲得訂單和生意!

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漏洞的示例分析”就介紹到這了,更多相關內容可以搜索創新互聯以前的文章,希望能夠幫助大家答疑解惑,請多多支持創新互聯網站!

分享標題:visibility指定符不當使用導致Dapp漏洞的示例分析
標題URL:http://vcdvsql.cn/article0/pejcio.html

成都網站建設公司_創新互聯,為您提供App開發外貿建站全網營銷推廣網站改版品牌網站制作建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營