Tx.origin

Published by Mario Oettler on

Gegeben ist folgender Smart Contract:

pragma solidity ^0.8.21;
contract OwnerContract{
    address public owner;
    address public txOrigin;
    address public msgSender;
         
    constructor() {
        owner = msg.sender;
    }
     
    function claimOwnership(address _owner) public{
         
        txOrigin = tx.origin;
        msgSender = msg.sender;
         
        if(tx.origin != msg.sender){
            owner = _owner;
        }
    }
}

Versuchen Sie, eine beliebige Adresse als owner einzutragen.

Lösung

tx.origin sollte nie! zur Authentifikation genutzt werden, da ein Angreifer-Smart-Contract diese Adresse weiterreichen kann, ohne dass Sie davon erfahren.

Categories: