【问题标题】:Solidity web3 JS fix byPass hack?Solidity web3 JS 修复绕过黑客?
【发布时间】:2021-09-20 22:18:05
【问题描述】:

我有一些关于如何使用 web3 控制 de msg.sender 的问题。

例如,我在solidity中有这个功能: 其中 owner 是 costructor 中使用的 msg.sender。例如是 0x9;

function NoPass() external view returns(string memory){
  require(msg.sender == owner, "NO ERES EL PROPIETARIO");
  return "HACKEADO";}

然后从 JS 我把这个函数称为:

contract.methods.NoPass().call({from:"0x9"}).then(res=>{
     console.log(res);})

我可以调用此函数并跳过 require,因为我的调用 FROM 我写了与所有者相同的帐户。 我该如何解决? 因为我将帐户保存在一个值中,所以黑客可以修改此帐户值并跳过要求。

谢谢,我是新人 在发送函数中 它只是调用函数 但这很正常吗?

【问题讨论】:

    标签: javascript solidity web3 web3-java


    【解决方案1】:

    call() 函数读取区块链状态并且不改变区块链的状态。 send() 创建事务并可以更改区块链状态。访问控制通常仅在可以更改区块链状态的功能中实现。此外,最好使用OpenZeppelin Ownable.sol 进行访问控制。

    【讨论】:

    • 但是如果我想要一个私有值,只想在我是所有者时检查...我不能¿
    • 我们放在区块链上的所有东西都是公开可见的。唯一的选项是加密或散列敏感数据。我们可以加密我们的数据并将密钥放在链外的某个地方。我们可以简单地对密钥进行哈希处理,然后将哈希值放到区块链上。
    猜你喜欢
    • 2019-12-15
    • 2021-11-10
    • 2019-08-15
    • 2018-05-27
    • 2018-11-25
    • 2021-09-19
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    相关资源
    最近更新 更多