De basis van Web3- en DApp-ontwikkeling · Les

Beveiligingstools en audits

Ontdek geautomatiseerde tools voor beveiligingsanalyses en het proces om professionele auditors in te schakelen voor een betere contractbeveiliging.

Les 2 van 311 stappen

Beveiligingstools en audits is een gratis De basis van Web3- en DApp-ontwikkeling-les op CoddyKit. Dit is les 2 van 3. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject De basis van Web3- en DApp-ontwikkeling. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus De basis van Web3- en DApp-ontwikkeling bevat in totaal 3 lessen.

Verder dan handmatige codecontrole

Smart contracts beheren waardevolle activa en zijn daardoor belangrijke doelwitten voor aanvallen. Zelfs ervaren ontwikkelaars kunnen subtiele kwetsbaarheden over het hoofd zien.

Daar komen gespecialiseerde beveiligingshulpmiddelen en professionele audits van pas. Ze voegen cruciale controleniveaus toe om je DApps te beschermen.

Geautomatiseerde scanners schieten te hulp

Geautomatiseerde beveiligingshulpmiddelen vormen je eerste verdedigingslinie. Ze scannen je code voor smart contracts snel op veelvoorkomende kwetsbaarheden, syntaxisfouten en naleving van best practices.

  • Snelheid: Grote codebases in enkele minuten analyseren.
  • Consistentie: Elke keer dezelfde regels toepassen.
  • Kostenefficiënt: Goedkoper dan handmatige audits voor eerste controles.

Statische analyse: code uitvoeren zonder deze uit te voeren

Hulpmiddelen voor statische analyse onderzoeken je code zonder deze daadwerkelijk uit te voeren. Ze bouwen een model van je programma om mogelijke problemen te vinden, zoals reentrancy, fouten in toegangsbeheer of niet-afgehandelde uitzonderingen.

Een populair opensourcehulpmiddel voor Solidity is Slither. Het detecteert een breed scala aan kwetsbaarheden en levert gedetailleerde rapporten.

Slither in actie (concept)

Stel je voor dat Slither dit eenvoudige contract scant. Het kan de functie withdraw markeren omdat niet expliciet wordt gecontroleerd of de ontvanger een contract is (hoewel transfer veiliger is dan call).

Hoewel dit codefragment relatief veilig is, kunnen complexe interacties risico's verbergen!

pragma solidity ^0.8.0;

contract SimpleWallet {
    address public owner;
    mapping(address => uint) public balances;

    constructor() {
        owner = msg.sender;
    }

    function deposit() public payable {
        balances[msg.sender] += msg.value;
    }

    function withdraw(uint _amount) public {
        require(balances[msg.sender] >= _amount, "Insufficient balance");
        payable(msg.sender).transfer(_amount);
        balances[msg.sender] -= _amount;
    }
}

Dynamische analyse: testen in uitvoering

Hulpmiddelen voor dynamische analyse, vaak "fuzzers" genoemd, voeren je contract uit met een breed scala aan willekeurige of gedeeltelijk willekeurige invoerwaarden. Ze houden het gedrag van het contract in de gaten om crashes, onverwachte toestandswijzigingen of schendingen van beveiligingseigenschappen te detecteren.

Hulpmiddelen zoals Echidna of de fuzzer van Foundry gebruiken deze aanpak om je code aan een stresstest te onderwerpen.

Een eenvoudige functie fuzz-en

Een fuzzer zou een functie zoals withdraw aanroepen met veel verschillende waarden voor _amount, waaronder zeer grote waarden en nulwaarden. De fuzzer kan ook meerdere keren deposit aanroepen en vervolgens vanaf verschillende accounts withdraw aanroepen.

De fuzzer zoekt naar situaties waarin balances[msg.sender] onjuist wordt of waarin het contract in een onbedoelde toestand terechtkomt.

function withdraw(uint _amount) public {
    require(balances[msg.sender] >= _amount, "Insufficient balance");
    // Fuzzer might try _amount = 0, _amount = MAX_UINT,
    // or call from different addresses rapidly.
    payable(msg.sender).transfer(_amount);
    balances[msg.sender] -= _amount;
}

Formele verificatie: absoluut bewijs

Voor uiterst kritieke componenten biedt formele verificatie het hoogste zekerheidsniveau. Hierbij worden wiskundige bewijzen gebruikt om te garanderen dat een slim contract zich onder alle mogelijke omstandigheden precies gedraagt zoals gespecificeerd.

Hoewel deze methode krachtig is, is ze complex en vergt ze veel middelen. Daarom wordt ze vaak voorbehouden aan contracten van kernprotocollen, waarbij zelfs een kleine fout catastrofale gevolgen kan hebben.

De menselijke factor: professionele controles

Geautomatiseerde hulpmiddelen zijn geweldig, maar ze kunnen niet alles opsporen. Ze missen vaak subtiele logische fouten, ontwerpfouten of complexe aanvalsvectoren waarvoor menselijk inzicht nodig is.

Professionele controleurs van slimme contracten brengen diepgaande expertise, creativiteit en de mindset van een hacker mee om deze geavanceerde problemen aan het licht te brengen die hulpmiddelen mogelijk over het hoofd zien.

Wat een controle inhoudt

Het inschakelen van een controleur verloopt meestal volgens een gestructureerd proces:

  • Afbakening: Spreek af welke contracten worden gecontroleerd.
  • Codecontrole: Controleurs bekijken de code handmatig, regel voor regel.
  • Testen en analyse: Ze gebruiken hulpmiddelen en aangepaste scripts.
  • Rapport opstellen: Gedetailleerde bevindingen, ernstniveaus en aanbevelingen.
  • Herstel en hercontrole: Je lost de problemen op en zij controleren de oplossingen.

Controleer je begrip

Welke van de volgende uitspraken over de beveiliging van slimme contracten zijn WAAR?

Samenvatting van de beveiligingshulpmiddelen

We hebben de cruciale rol onderzocht van zowel geautomatiseerde hulpmiddelen als professionele controles door mensen bij het beveiligen van je slimme contracten.

Onthoud:

  • Geautomatiseerde hulpmiddelen (statische analyse zoals Slither, dynamische analyse en fuzzing zoals Echidna) zorgen voor snelheid en consistentie.
  • Formele verificatie biedt absoluut wiskundig bewijs voor kritieke onderdelen.
  • Professionele controles bieden onmisbaar menselijk inzicht om complexe, subtiele kwetsbaarheden op te sporen.

Een combinatie van deze benaderingen is essentieel voor het bouwen van robuuste en veilige DApps.

Gratis beginnen

Leer De basis van Web3- en DApp-ontwikkeling met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
29
Lessen
105

Veelgestelde vragen

Is de les “Beveiligingstools en audits” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad De basis van Web3- en DApp-ontwikkeling, waaronder “Beveiligingstools en audits”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus De basis van Web3- en DApp-ontwikkeling bevat in totaal 3 lessen.

Wat leer ik in “Beveiligingstools en audits”?

Ontdek geautomatiseerde tools voor beveiligingsanalyses en het proces om professionele auditors in te schakelen voor een betere contractbeveiliging. Je oefent met De basis van Web3- en DApp-ontwikkeling door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met De basis van Web3- en DApp-ontwikkeling te beginnen?

Ervaring vooraf is niet nodig. De basis van Web3- en DApp-ontwikkeling op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 3.

Hoe lang duurt de les “Beveiligingstools en audits”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over De basis van Web3- en DApp-ontwikkeling?

Ja. Elke les over De basis van Web3- en DApp-ontwikkeling bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Veelvoorkomende kwetsbaarheden in smart contracts
  2. Beveiligingstools en audits
  3. Technieken voor gasoptimalisatie
← Terug naar De basis van Web3- en DApp-ontwikkeling