Nonce

Ein Nonce (Number used Once) ist ein kryptografisches Einmaltoken, das WordPress verwendet, um sicherzustellen, dass ein Formular-Submit oder eine AJAX-Anfrage tatsächlich von einem autorisierten Nutzer auf der eigenen Website ausgelöst wurde. Nonces schützen vor CSRF-Angriffen (Cross-Site Request Forgery) – also Anfragen, die von fremden Websites im Namen eines eingeloggten Nutzers gestellt werden.

Wie WordPress Nonces funktionieren

Ein Nonce wird aus einer Kombination aus Nutzer-ID, aktuellem Datum, der Aktion und einem geheimen Schlüssel erzeugt. Er ist standardmäßig 24 Stunden gültig und wird bei jedem Seitenaufruf neu generiert. Beim Absenden eines Formulars prüft WordPress, ob der mitgesendete Nonce gültig ist – ist er abgelaufen oder manipuliert, wird die Aktion abgelehnt.

Nonces in der Plugin-Entwicklung

// Nonce erzeugen (im Template oder Formular)
$nonce = wp_create_nonce( 'meine_aktion' );

// Als Hidden-Feld in einem Formular
wp_nonce_field( 'meine_aktion', 'meine_nonce' );

// Nonce prüfen (beim Verarbeiten)
if ( ! check_ajax_referer( 'meine_aktion', 'meine_nonce', false ) ) {
    wp_send_json_error( 'Ungültiger Nonce' );
}

Wichtige Unterscheidung

WordPress-Nonces sind kein klassisches CSRF-Token im strikten Sinne, weil sie nicht komplett zufällig und nicht absolut einmalig sind – sie sind für denselben Nutzer im gleichen Zeitfenster reproduzierbar. Sie bieten trotzdem einen sehr guten Schutz gegen CSRF-Angriffe im WordPress-Kontext. Für Security-kritische Transaktionen (z.B. Zahlungen) sollte zusätzliche Absicherung implementiert werden.