真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用構(gòu)造函數(shù)導(dǎo)致Dapp漏洞的示例分析

使用構(gòu)造函數(shù)導(dǎo)致Dapp漏洞的示例分析,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鞏義ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鞏義網(wǎng)站制作公司

構(gòu)造函數(shù)是一個(gè)比較特殊的函數(shù),在構(gòu)造函數(shù)里會(huì)執(zhí)行一些初始化合約是比較關(guān)鍵的功能。在Solidity 版本0.4.22之前,構(gòu)造函數(shù)是一個(gè)和合約同名的函數(shù)。所以如果在開(kāi)發(fā)過(guò)程中,合約名變了的話,如果構(gòu)造函數(shù)名沒(méi)有發(fā)生變化,原來(lái)的構(gòu)造函數(shù)就會(huì)變成常規(guī)的可以調(diào)用的函數(shù)。這就會(huì)導(dǎo)致合約漏洞。

攻擊原理

合約名變了的話,或者構(gòu)造函數(shù)有一個(gè)輸入錯(cuò)誤,這會(huì)導(dǎo)致函數(shù)名和合約名不一致。這個(gè)時(shí)候,構(gòu)造函數(shù)就是一個(gè)常規(guī)的函數(shù)。如果構(gòu)造函數(shù)里執(zhí)行了一些已授權(quán)的專有操作,就會(huì)導(dǎo)致嚴(yán)重的后果??纯聪旅娴暮霞s代碼:

 contract OwnerWallet {
  address public owner;
  //constructor
  function ownerWallet(address _owner) public {
  owner = _owner;
  }
  
  // fallback. Collect ether.
   function () payable {} 
  
  function withdraw() public {
  require(msg.sender == owner); 
  msg.sender.transfer(this.balance);
  }
 }

這個(gè)合約接受ether充值,并且僅允許合約所有者可以用withdraw()函數(shù)提取。如果構(gòu)造函數(shù)變成了常規(guī)函數(shù)的話,任何用戶都可以調(diào)用ownerWallet函數(shù),把他們自己設(shè)置成為合約的所有者,然后調(diào)用withdraw提取合約里所有的資金。

防護(hù)技術(shù)

這個(gè)問(wèn)題主要發(fā)生在Solidity編譯器版本 0.4.22. 這個(gè)版本引入了一個(gè)constructor關(guān)鍵字來(lái)表明一個(gè)構(gòu)造函數(shù),而不再要求構(gòu)造函數(shù)名和合約名一致。建議使用constructor關(guān)鍵字來(lái)防止以后高版本帶來(lái)的命名問(wèn)題。

看完上述內(nèi)容,你們掌握使用構(gòu)造函數(shù)導(dǎo)致Dapp漏洞的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


新聞名稱:使用構(gòu)造函數(shù)導(dǎo)致Dapp漏洞的示例分析
本文鏈接:http://weahome.cn/article/gppsjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部