-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
Quelle est la différence entre tx.origin et msg.sender et pourquoi devriez-vous éviter tx.origin ?
Always use `msg.sender` for access control in smart contracts—`tx.origin` can be exploited by malicious contracts in call chains, leading to unauthorized withdrawals or phishing attacks.
Nov 23, 2025 at 07:39 pm
Comprendre tx.origin et msg.sender dans les contrats intelligents Ethereum
1. tx.origin fait référence au compte externe d'origine qui a initié la transaction, quel que soit le nombre d'appels de contrat effectués en cours de route. Cela signifie que si un utilisateur envoie une transaction qui interagit avec le contrat A, qui appelle ensuite le contrat B, la valeur de tx.origin dans le contrat B pointera toujours vers l'adresse du portefeuille de l'utilisateur.
2. msg.sender, en revanche, représente l'appelant immédiat de la fonction actuelle, qu'il s'agisse d'un compte externe (EOA) ou d'un autre contrat. Dans le même exemple, lorsque le contrat A appelle le contrat B, msg.sender à l'intérieur du contrat B serait l'adresse du contrat A, et non celle de l'utilisateur d'origine.
3. La distinction devient critique dans les fonctions sensibles aux autorisations telles que le contrôle d'accès ou les mécanismes de retrait. S'appuyer sur tx.origin peut créer des vulnérabilités car tout contrat malveillant invoqué par l'utilisateur, même indirectement, peut usurper l'identité de son autorité si la logique dépend de tx.origin pour l'authentification.
4. Par exemple, considérons un contrat intelligent qui autorise les retraits uniquement si tx.origin correspond à l'adresse du propriétaire. Un attaquant pourrait créer un contrat malveillant avec lequel le propriétaire interagit sans le savoir. Ce contrat, une fois déclenché, appelle la fonction de retrait du contrat victime. Puisque tx.origin reste l'adresse du propriétaire, le contrôle est réussi, permettant le vol malgré des contrôles de propriété appropriés.
5. Ce comportement porte atteinte au principe du moindre privilège dans le codage sécurisé. Les contrats intelligents doivent être validés en fonction de celui qui les a directement appelés, et non de celui qui a lancé la chaîne. L'utilisation de msg.sender permet une meilleure composabilité et s'aligne sur les modèles attendus dans les applications décentralisées où les contrats interagissent régulièrement les uns avec les autres.
Risques associés à l'utilisation de tx.origin
1. Les attaques de phishing deviennent plus faciles lorsque tx.origin est utilisé pour l'autorisation. Les utilisateurs peuvent approuver des transactions apparemment inoffensives qui déclenchent des chaînes d'appels plus profondes, permettant aux attaquants de drainer les fonds de contrats qui font confiance à tort à tx.origin.
2. La présence de tx.origin crée un faux sentiment de sécurité. Les développeurs peuvent supposer qu'ils valident l'utilisateur final, mais en réalité, ils exposent leur système à des exploits de proxy via des contrats intermédiaires.
3. Il n'existe aucun mécanisme intégré pour restreindre ou nettoyer tx.origin. Il ne peut pas être usurpé directement, mais sa nature même le rend impropre au contrôle d'accès car il contourne le modèle de délégation inhérent à l'environnement d'exécution d'Ethereum.
4. Les contrats évolutifs et les protocoles DeFi complexes reposent souvent sur des interactions à plusieurs niveaux. Lorsque tx.origin est intégré à la logique de base, ces systèmes risquent de se briser lors d'opérations inter-contrats légitimes, entraînant des retours inattendus ou des erreurs d'autorisation.
5. Les normes communautaires et les cadres d'audit tels que Consensys Best Practices recommandent explicitement de ne pas utiliser tx.origin à des fins d'autorisation. Des audits majeurs du protocole ont signalé son utilisation comme étant à haut risque, contribuant ainsi à des exploits réels dans les contrats de jetons de première génération.
Meilleures pratiques pour une conception de contrat sécurisée
1. Utilisez toujours msg.sender lors de la vérification des autorisations dans un contrat, sauf s'il existe une raison très spécifique et justifiée de faire référence à l'initiateur de la transaction d'origine. Et même dans ce cas, une extrême prudence est requise.
2. Implémentez un contrôle d'accès basé sur les rôles à l'aide de bibliothèques établies telles que Ownable ou AccessControl d'OpenZeppelin, conçues autour de msg.sender et prenant en charge la gestion granulaire des autorisations sans dépendre de tx.origin.
3. Évitez d’écrire une logique d’autorisation personnalisée à partir de zéro. Tirez parti de modèles bien testés et approuvés par la communauté qui évitent les pièges courants associés à la vérification d’identité dans les environnements décentralisés.
4. Effectuer des examens de sécurité approfondis en se concentrant sur les flux d'authentification. Les outils d'analyse statique et les méthodes de vérification formelle peuvent détecter une utilisation inappropriée de tx.origin et suggérer des alternatives plus sûres.
5. Éduquer les équipes de développement sur le modèle d'exécution de l'EVM. Comprendre comment les piles d'appels se propagent et comment le contexte de l'expéditeur change lors des invocations de contrat permet d'éviter les défauts de conception dus à une mauvaise compréhension de la sémantique tx.origin.
Foire aux questions
tx.origin peut-il un jour être utilisé en toute sécurité ? Oui, mais uniquement dans des scénarios très limités, tels que la journalisation de l'initiateur d'origine à des fins d'analyse ou de suivi d'état non critique. Même dans ce cas, les développeurs doivent s’assurer que cela n’influence pas les décisions d’accès ou les transferts de fonds.
L’utilisation de msg.sender prévient-elle tous les risques d’usurpation d’identité ? Aucune variable à elle seule n'élimine tous les risques, mais msg.sender s'aligne sur le modèle de sécurité prévu par Ethereum. La protection contre l’usurpation d’identité nécessite également des mesures supplémentaires telles que la validation des entrées, des gardes de réentrée et des modèles de conception sécurisés.
Que se passe-t-il si un contrat utilise tx.origin et est appelé par un autre contrat ? Le tx.origin reste l'adresse de l'utilisateur d'origine, ce qui peut conduire à des résultats d'autorisation involontaires. Un contrat s'attendant à une interaction directe de la part d'un EOA pourrait accorder par erreur l'accès à un contrat intermédiaire malveillant simplement parce que le signataire initial était valide.
Existe-t-il des outils permettant de détecter une utilisation abusive de tx.origin ? Oui, les scanners de sécurité tels que Slither, MythX et Solhint signalent l'utilisation de tx.origin dans les contextes d'autorisation. Ces outils s'intègrent aux pipelines CI/CD et aident à identifier les modèles à risque avant le déploiement.
Clause de non-responsabilité:info@kdj.com
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.
-
RAIN Échangez maintenant$0.007852
113.00%
-
PIPPIN Échangez maintenant$0.06097
51.96%
-
PARTI Échangez maintenant$0.1396
42.04%
-
WAVES Échangez maintenant$0.9141
41.69%
-
ARC Échangez maintenant$0.04302
35.73%
-
HONEY Échangez maintenant$0.01029
21.80%
- Crypto Coaster : Bitcoin mène une chasse intense à la liquidation alors que les marchés s'ébranlent
- 2026-02-01 00:40:02
- Une erreur de pièce rare de 1 £ pourrait valoir 2 500 £ : portez-vous une fortune ?
- 2026-02-01 00:45:01
- Naviguer dans le paysage cryptographique : risque vs récompense dans les creux de Solana et l'attrait des préventes cryptographiques
- 2026-02-01 01:10:01
- Le point de vue du PDG de NVIDIA, Jensen Huang : la crypto comme stockage d'énergie et le rôle évolutif des PDG technologiques
- 2026-02-01 01:15:02
- Bitcoin Bears Bleeding : le marché de la cryptographie navigue dans l’incertitude au milieu de sables mouvants
- 2026-02-01 01:10:01
- La pièce d'erreur de 1 £ qui pourrait vous rapporter 2 500 £ : une fortune microscopique dans votre monnaie
- 2026-02-01 01:05:02
Connaissances connexes
Comment exécuter un message inter-chaînes avec un contrat LayerZero ?
Jan 18,2026 at 01:19pm
Comprendre l'architecture LayerZero 1. LayerZero fonctionne comme un protocole d'interopérabilité léger et sans autorisation qui permet la com...
Comment mettre en œuvre EIP-712 pour la vérification sécurisée des signatures ?
Jan 20,2026 at 10:20pm
Présentation de l'EIP-712 et objectif principal 1. EIP-712 définit une norme pour le hachage et la signature de données structurées typées dans le...
Comment se qualifier pour les parachutages en interagissant avec de nouveaux contrats ?
Jan 24,2026 at 09:00pm
Comprendre les exigences d'interaction contractuelle 1. La plupart des campagnes de largage nécessitent une interaction directe avec des contrats ...
Comment surveiller un contrat intelligent pour les alertes de sécurité ?
Jan 21,2026 at 07:59am
Outils de surveillance en chaîne 1. Les explorateurs de blockchain comme Etherscan et Blockscout permettent une inspection en temps réel du bytecode d...
Comment mettre en place et financer un contrat de paiements automatisés ?
Jan 26,2026 at 08:59am
Comprendre le déploiement de contrats intelligents 1. Les développeurs doivent sélectionner une plate-forme blockchain compatible telle que Ethereum, ...
Comment utiliser les contrats OpenZeppelin pour créer des dApps sécurisées ?
Jan 18,2026 at 11:19am
Comprendre les principes fondamentaux des contrats OpenZeppelin 1. OpenZeppelin Contracts est une bibliothèque de composants de contrats intelligents ...
Comment exécuter un message inter-chaînes avec un contrat LayerZero ?
Jan 18,2026 at 01:19pm
Comprendre l'architecture LayerZero 1. LayerZero fonctionne comme un protocole d'interopérabilité léger et sans autorisation qui permet la com...
Comment mettre en œuvre EIP-712 pour la vérification sécurisée des signatures ?
Jan 20,2026 at 10:20pm
Présentation de l'EIP-712 et objectif principal 1. EIP-712 définit une norme pour le hachage et la signature de données structurées typées dans le...
Comment se qualifier pour les parachutages en interagissant avec de nouveaux contrats ?
Jan 24,2026 at 09:00pm
Comprendre les exigences d'interaction contractuelle 1. La plupart des campagnes de largage nécessitent une interaction directe avec des contrats ...
Comment surveiller un contrat intelligent pour les alertes de sécurité ?
Jan 21,2026 at 07:59am
Outils de surveillance en chaîne 1. Les explorateurs de blockchain comme Etherscan et Blockscout permettent une inspection en temps réel du bytecode d...
Comment mettre en place et financer un contrat de paiements automatisés ?
Jan 26,2026 at 08:59am
Comprendre le déploiement de contrats intelligents 1. Les développeurs doivent sélectionner une plate-forme blockchain compatible telle que Ethereum, ...
Comment utiliser les contrats OpenZeppelin pour créer des dApps sécurisées ?
Jan 18,2026 at 11:19am
Comprendre les principes fondamentaux des contrats OpenZeppelin 1. OpenZeppelin Contracts est une bibliothèque de composants de contrats intelligents ...
Voir tous les articles














