Contrôle d'accès des smart contracts Rust : visibilité des fonctions et gestion des accès privilégiés

Contrôle d'accès dans les smart contracts Rust

Cet article explorera le problème du contrôle d'accès dans les smart contracts Rust sous deux aspects :

  1. La visibilité des méthodes de contrat
  2. Contrôle d'accès des fonctions privilégiées

Visibilité des fonctions de contrat

Dans les smart contracts Rust, le contrôle de la visibilité des fonctions est crucial. Prenons l'exemple de l'incident de sécurité survenu en 2020 sur la plateforme d'échange Bancor Network, où le fait de définir par erreur la fonction de transfert clé comme publique a mis en danger les actifs des utilisateurs.

Dans les smart contracts Rust de NEAR, la visibilité des fonctions se décline principalement en plusieurs types :

  • pub fn: fonction publique, pouvant être appelée depuis l'extérieur du contrat
  • fn: ne peut être appelé que de l'intérieur du contrat
  • pub(crate) fn: limite d'appel à l'intérieur de crate

De plus, définir une fonction dans un bloc impl qui n'est pas annoté par #[near_bindgen] peut également la rendre fonction interne.

Pour les fonctions de rappel, elles doivent être définies comme publiques mais doivent également être limitées à un appel uniquement par le contrat lui-même. Vous pouvez utiliser la macro #[private] pour réaliser cela.

Il est à noter que, par défaut, tout dans Rust est privé, à l'exception des éléments dans pub Trait et pub Enum.

Contrôle d'accès des fonctions privilégiées

En plus de la visibilité des fonctions, il est également nécessaire d'établir un mécanisme de contrôle d'accès complet sur le plan sémantique. De manière similaire au modificateur onlyOwner dans Solidity, nous pouvons définir un trait similaire en Rust:

rouille pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }

L'utilisation de ce trait permet de contrôler l'accès aux fonctions privilégiées, garantissant que seuls les propriétaires du contrat peuvent appeler ces fonctions.

Sur la base de ce principe, nous pouvons réaliser un contrôle d'accès granulaire pour plusieurs utilisateurs sur liste blanche ou plusieurs groupes de listes blanches en personnalisant des traits plus complexes.

En plus de cela, il est également possible de mettre en œuvre des contrôles de moment d'appel, des mécanismes de signatures multiples et d'autres méthodes de contrôle d'accès pour répondre aux besoins de sécurité dans différents scénarios.

GET0.14%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 6
  • Reposter
  • Partager
Commentaire
0/400
WalletManagervip
· 08-01 21:48
Le contrôle des accès doit être strict.
Voir l'originalRépondre0
HashBrowniesvip
· 08-01 05:29
Le contrôle des droits est vraiment incroyable.
Voir l'originalRépondre0
GasFeeCriervip
· 07-30 19:25
La configuration des autorisations d'appel doit être effectuée avec prudence.
Voir l'originalRépondre0
TeaTimeTradervip
· 07-30 19:21
Le contrôle des permissions est vraiment difficile à gérer.
Voir l'originalRépondre0
CoinBasedThinkingvip
· 07-30 19:07
Il y a trop de vulnérabilités de sécurité.
Voir l'originalRépondre0
NotFinancialAdvicevip
· 07-30 18:57
Contenu vraiment utile
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)