solidity-security
Développement sécurisé de smart contracts
Également disponible depuis: wshobson
Prévenez les vulnérabilités coûteuses dans votre code Solidity. Cette compétence fournit des modèles de sécurité éprouvés, des listes de contrôle pour la détection des vulnérabilités et des techniques d'optimisation du gas utilisées par les auditeurs professionnels pour protéger les protocoles DeFi et les smart contracts.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "solidity-security". Is this withdraw function secure? function withdraw() public { uint256 amount = balances[msg.sender]; payable(msg.sender).transfer(amount); balances[msg.sender] = 0; }
Résultat attendu:
Cette fonction est VULNÉRABLE à la réentrance. L'appel externe se produit avant la mise à jour de l'état. Un attaquant peut appeler récursivement withdraw avant que le solde ne soit mis à zéro. CORRECTION : Appliquez le modèle Checks-Effects-Interactions : d'abord définissez balances[msg.sender] = 0, puis effectuez l'appel externe. Alternativement, utilisez ReentrancyGuard d'OpenZeppelin avec le modificateur nonReentrant.
Utilisation de "solidity-security". How do I add access control to my admin-only function?
Résultat attendu:
Importez le contrat Ownable d'OpenZeppelin et utilisez le modificateur onlyOwner. Alternativement, implémentez un contrôle d'accès basé sur les rôles avec un mapping et un modificateur personnalisé. Assurez-vous que la fonction valide que msg.sender est autorisé avant d'exécuter des opérations sensibles.
Audit de sécurité
SûrAll 72 static analysis findings are false positives. The detected patterns (shell backticks, dynamic requires, weak cryptography) exist within markdown code blocks demonstrating Solidity security concepts and JavaScript testing examples. This skill contains only educational documentation with no executable code. The skill legitimately teaches smart contract security best practices including reentrancy prevention, access control, and gas optimization.
Score de qualité
Ce que vous pouvez construire
Construction d'un protocole DeFi
Implémentez des contrats de prêt, d'emprunt ou d'échange sécurisés avec des protections de réentrance et un contrôle d'accès appropriés.
Audit de smart contracts
Examinez les contrats existants pour détecter les vulnérabilités avant le déploiement sur le mainnet ou l'intégration.
Apprentissage de la sécurité Solidity
Comprenez les vecteurs d'attaque courants et les modèles de mitigation éprouvés pour un développement sécurisé.
Essayez ces prompts
Review my Solidity contract for common vulnerabilities including reentrancy, overflow, and access control issues. Point out any insecure patterns and suggest fixes.
Help me add reentrancy protection to my withdraw function. Show me both the Checks-Effects-Interactions pattern and the OpenZeppelin ReentrancyGuard approach.
Analyze my contract for gas optimization opportunities. Focus on storage packing, calldata usage, and reducing redundant operations while maintaining security.
Review my contract for audit readiness. Check for NatSpec documentation, input validation, emergency stop mechanisms, and proper event emission. Create a security checklist.
Bonnes pratiques
- Appliquez toujours le modèle Checks-Effects-Interactions : validez les entrées, mettez à jour l'état, puis effectuez les appels externes
- Utilisez les contrats audités d'OpenZeppelin pour ReentrancyGuard, Ownable et Pausable au lieu d'implémentations personnalisées
- Activez Solidity 0.8+ pour la protection intégrée contre les débordements ou utilisez la bibliothèque SafeMath pour les versions antérieures
Éviter
- N'utilisez jamais tx.origin pour l'authentification - il peut être compromis par des attaques de phishing via des contrats malveillants
- Évitez les appels externes avant la mise à jour de l'état du contrat, car cela permet les attaques par réentrance
- N'utilisez pas de pragma flottant - épinglez toujours à une version spécifique de Solidity pour garantir une compilation déterministe