{
    "title": "Nonce",
    "seo_title": "Nonce: definitie en gebruik in WordPress",
    "h1": "Nonce",
    "description": "Wat is een nonce? Het cryptografische principe, de WordPress-nonce tegen CSRF, de geldigheid van 12 tot 24 uur en hoe je hem goed gebruikt in je code.",
    "lead": "Een nonce is een waarde, in principe willekeurig en eenmalig, die aan een uitwisseling wordt toegevoegd om te voorkomen dat die wordt herhaald of vervalst. In WordPress is de nonce een token dat gekoppeld is aan een actie, een gebruiker en zijn sessie, 12 tot 24 uur geldig, en dat vooral beschermt tegen CSRF-aanvallen.",
    "language": "nl",
    "locale": "nl-NL",
    "type": "definition",
    "url": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/",
    "canonical": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/",
    "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/index.md",
    "json": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/index.json",
    "published": "2026-10-28T08:00:00+00:00",
    "modified": "2026-10-28T20:08:56+00:00",
    "site": {
        "name": "WP Masquerade",
        "url": "https://www.wp-masquerade.com/nl/"
    },
    "translations": [
        {
            "language": "nl",
            "hreflang": "nl-NL",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/index.md",
            "json": "https://www.wp-masquerade.com/nl/woordenlijst/nonce/index.json"
        },
        {
            "language": "en",
            "hreflang": "en-US",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/glossary/nonce/",
            "markdown": "https://www.wp-masquerade.com/glossary/nonce/index.md",
            "json": "https://www.wp-masquerade.com/glossary/nonce/index.json"
        },
        {
            "language": "fr",
            "hreflang": "fr-FR",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/fr/definitions/nonce/",
            "markdown": "https://www.wp-masquerade.com/fr/definitions/nonce/index.md",
            "json": "https://www.wp-masquerade.com/fr/definitions/nonce/index.json"
        },
        {
            "language": "es",
            "hreflang": "es-ES",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/es/glosario/nonce/",
            "markdown": "https://www.wp-masquerade.com/es/glosario/nonce/index.md",
            "json": "https://www.wp-masquerade.com/es/glosario/nonce/index.json"
        },
        {
            "language": "de",
            "hreflang": "de-DE",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/de/glossar/nonce/",
            "markdown": "https://www.wp-masquerade.com/de/glossar/nonce/index.md",
            "json": "https://www.wp-masquerade.com/de/glossar/nonce/index.json"
        },
        {
            "language": "it",
            "hreflang": "it-IT",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/it/glossario/nonce/",
            "markdown": "https://www.wp-masquerade.com/it/glossario/nonce/index.md",
            "json": "https://www.wp-masquerade.com/it/glossario/nonce/index.json"
        },
        {
            "language": "pt",
            "hreflang": "pt-BR",
            "title": "Nonce",
            "url": "https://www.wp-masquerade.com/pt/glossario/nonce/",
            "markdown": "https://www.wp-masquerade.com/pt/glossario/nonce/index.md",
            "json": "https://www.wp-masquerade.com/pt/glossario/nonce/index.json"
        }
    ],
    "headings": [
        {
            "level": 1,
            "text": "Nonce"
        },
        {
            "level": 2,
            "text": "Waar nonces op het web voor dienen"
        },
        {
            "level": 2,
            "text": "WordPress-nonces: niet echt nonces"
        },
        {
            "level": 2,
            "text": "Voor WordPress: nonces goed gebruiken"
        },
        {
            "level": 2,
            "text": "Veelgemaakte fouten"
        }
    ],
    "body": "Het woord komt van het Engelse \"number used once\". In de cryptografie omschrijft MDN het als een willekeurige waarde die maar een keer in een communicatie wordt gebruikt, om te voorkomen dat een onderschept bericht opnieuw wordt afgespeeld, om te garanderen dat een antwoord vers is of om toeval toe te voegen aan een berekening. Op het web dekt de term echter twee nogal verschillende zaken, die je beter niet door elkaar haalt: de \"zuivere\" cryptografische nonce en de nonce van WordPress.\n\n## Waar nonces op het web voor dienen\n\n- **In protocollen**: de uitwisselingen van [TLS](https://www.wp-masquerade.com/nl/woordenlijst/tls-ssl/) en veel authenticatiemechanismen bevatten eenmalige willekeurige waarden, zodat een opgenomen gesprek niet ongewijzigd kan worden afgespeeld.\n- **In een Content Security Policy**: de server maakt bij elk antwoord een willekeurige waarde aan en zet die in de directive `script-src 'nonce-...'` en in het attribuut `nonce` van de toegestane scripts. Een strikte [CSP](https://www.wp-masquerade.com/nl/woordenlijst/content-security-policy/) voert alleen scripts uit die de juiste waarde dragen. MDN benadrukt dat die waarde bij elk antwoord moet veranderen en onvoorspelbaar moet blijven.\n- **Tegen vervalste verzoeken**: een geheim token in formulieren bewijst dat het verzoek echt van een pagina van de site komt, wat [CSRF-aanvallen](https://www.wp-masquerade.com/nl/woordenlijst/csrf/) tegenhoudt. Dat is de belangrijkste rol van WordPress-nonces.\n\n## WordPress-nonces: niet echt nonces\n\nDe officiële documentatie van WordPress geeft het zelf toe: zijn nonces zijn geen getallen en ook niet eenmalig. De functie `wp_create_nonce()` berekent een hash van tien tekens op basis van de gevraagde actie, het ID van de gebruiker, zijn sessietoken en een tijdsperiode. Daarbij worden de sleutels `NONCE_KEY` en `NONCE_SALT` uit `wp-config.php` gebruikt, en daarom is een unieke [salt](https://www.wp-masquerade.com/nl/woordenlijst/salting/) belangrijk.\n\n- **Levensduur**: standaard een dag, verdeeld in twee periodes van 12 uur. Afhankelijk van het moment waarop hij is aangemaakt, blijft een nonce dus 12 tot 24 uur geldig. Het filter `nonce_life` past die duur aan.\n- **Herbruikbaar**: WordPress controleert niet of een nonce maar een keer is gebruikt. Binnen de geldigheidsduur beschermt hij dus niet tegen herhaling.\n- **Niet-ingelogde bezoekers**: hun ID is 0, waardoor alle anonieme bezoekers voor dezelfde actie dezelfde nonce kunnen krijgen.\n\n![Schema in vijf stappen: WordPress maakt een nonce gekoppeld aan de actie, de gebruiker, zijn sessie en een periode van 12 uur; de gebruiker verstuurt het formulier met het token; een vervalst verzoek vanaf een andere site komt aan zonder het juiste token; check_admin_referer of wp_verify_nonce weigert het; current_user_can controleert ten slotte de capability voordat er iets gebeurt](https://www.wp-masquerade.com/media/2026/10/nonce-wordpress-verification-nl.webp)\n\n*De nonce bewijst dat het verzoek van een pagina van de site komt; de rechten worden apart gecontroleerd.*\n\n## Voor WordPress: nonces goed gebruiken\n\nVoor een ontwikkelaar van thema's of plugins komt de regel neer op drie functies en een rechtencontrole:\n\n```\n// In het formulier\nwp_nonce_field( 'verwijder_post_' . $post_id );\n\n// Bij de verwerking\ncheck_admin_referer( 'verwijder_post_' . $post_id );\nif ( ! current_user_can( 'delete_post', $post_id ) ) {\n    wp_die( 'Actie niet toegestaan.' );\n}\n```\n\n- `check_admin_referer()` controleert de nonce en de referer op beheerschermen, `check_ajax_referer()` alleen de nonce voor AJAX-verzoeken, `wp_verify_nonce()` in de overige gevallen.\n- Geef de actie een precieze naam (met het ID van het object) in plaats van een algemene naam die de hele site deelt.\n- Vertrouw voor autorisatie nooit op de nonce: de documentatie vraagt om elke functie te beschermen met `current_user_can()`.\n\n## Veelgemaakte fouten\n\nEen flink deel van de pluginlekken die elk jaar worden gemeld, komt door een ontbrekende nonce of een vergeten capability-controle, zoals ons artikel [over WordPress-pluginlekken in cijfers](https://www.wp-masquerade.com/nl/kwetsbaarheden-wordpress-plugins-in-cijfers/) laat zien. Het typische geval: een AJAX-actie controleert de nonce, maar niet het recht van de gebruiker. Een nonce kan echter uitlekken in de code van een openbare pagina; is hij de enige drempel, dan kan een gewone abonnee soms een beheerdersactie uitvoeren, wat leidt tot [privilege-escalatie](https://www.wp-masquerade.com/nl/woordenlijst/privilege-escalatie/). Onze gids over rollen en capabilities in WordPress legt het principe van minimale rechten uit.\n\nNog een valkuil: een pagina die langer dan 12 tot 24 uur in de cache staat, serveert een verlopen nonce, en het formulier mislukt dan met de melding dat de gevolgde link verlopen is (in het Engels \"The link you followed has expired\"). Sluit pagina's met formulieren voor ingelogde gebruikers uit van de cache.\n\n## Gerelateerde termen\n\n- [CSRF (cross-site request forgery)](https://www.wp-masquerade.com/nl/woordenlijst/csrf/)\n- [Content Security Policy (CSP)](https://www.wp-masquerade.com/nl/woordenlijst/content-security-policy/)\n- [Privilege-escalatie](https://www.wp-masquerade.com/nl/woordenlijst/privilege-escalatie/)\n- [Salting (zouten van wachtwoorden)](https://www.wp-masquerade.com/nl/woordenlijst/salting/)\n- [TLS / SSL](https://www.wp-masquerade.com/nl/woordenlijst/tls-ssl/)\n\n\n## Bronnen\n\n- [WordPress Common APIs Handbook : Nonces](https://developer.wordpress.org/apis/security/nonces/)\n- [WordPress Developer Resources : wp_create_nonce()](https://developer.wordpress.org/reference/functions/wp_create_nonce/)\n- [MDN : Nonce (glossaire)](https://developer.mozilla.org/en-US/docs/Glossary/Nonce)\n- [OWASP : Cross-Site Request Forgery Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html)",
    "definition": "Een nonce is een waarde, in principe willekeurig en eenmalig, die aan een uitwisseling wordt toegevoegd om te voorkomen dat die wordt herhaald of vervalst. In WordPress is de nonce een token dat gekoppeld is aan een actie, een gebruiker en zijn sessie, 12 tot 24 uur geldig, en dat vooral beschermt tegen CSRF-aanvallen.",
    "group": "Webbeveiliging",
    "aka": [
        "number used once",
        "anti-CSRF-token",
        "wp_nonce",
        "WordPress-nonce"
    ],
    "related": [
        {
            "title": "CSRF (cross-site request forgery)",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/csrf/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/csrf/index.md"
        },
        {
            "title": "Content Security Policy (CSP)",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/content-security-policy/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/content-security-policy/index.md"
        },
        {
            "title": "Privilege-escalatie",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/privilege-escalatie/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/privilege-escalatie/index.md"
        },
        {
            "title": "Salting (zouten van wachtwoorden)",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/salting/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/salting/index.md"
        },
        {
            "title": "TLS / SSL",
            "url": "https://www.wp-masquerade.com/nl/woordenlijst/tls-ssl/",
            "markdown": "https://www.wp-masquerade.com/nl/woordenlijst/tls-ssl/index.md"
        }
    ],
    "sources": [
        {
            "title": "WordPress Common APIs Handbook : Nonces",
            "url": "https://developer.wordpress.org/apis/security/nonces/"
        },
        {
            "title": "WordPress Developer Resources : wp_create_nonce()",
            "url": "https://developer.wordpress.org/reference/functions/wp_create_nonce/"
        },
        {
            "title": "MDN : Nonce (glossaire)",
            "url": "https://developer.mozilla.org/en-US/docs/Glossary/Nonce"
        },
        {
            "title": "OWASP : Cross-Site Request Forgery Prevention Cheat Sheet",
            "url": "https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html"
        }
    ],
    "format": "application/json"
}