Als WordPress Entwickler ist man bestrebt, seine Funktionalitäten so gut wie geht abzusichern. Eine sehr gute Möglichkeit dies zu erreichen besteht darin, Nonces zu verwenden. Sie bieten zwar kein Wundermittel gegen alles und jedes aber erhöhen das Sicherheitsmoment.
Nonce steht für „Number used once„. Also eine Zeichenfolge, die man nur einmal benutzt.
Sie sollen überprüfen, ob die Daten eh von der richtigen Seite kommen. Dadurch sollen Formulareingaben abgesichert werden.
Erreicht wird das zb, indem man sich für ein Formular ganz einfach mit wp nonce field() ein verstecktes Formularfeld generieren lässt und dies mit wp_verify_nonce() überprüft. Details zur näheren Funktionalität gibt es in den hier verlinkten Codex Seiten.
Wie funktioniert das jetzt genau?
Das Nonce, welches man als Parameter in zb wp_nonce_field() eingegeben hat wird im Formularfeld im Frontend angezeigt. Natürlich nicht im Klartext, sondern unter anderem mit der User ID und einem Zeitstempel gehasht. Das ist jetzt unser generiertes Nonce.
Im Code, der die Anfrage aus dem Formular bearbeitet, wird der verschwurbelte Nonce Wert wieder durch wp_verify_nonce() in Klartext umgewandelt und mit unserer Eingabe für zb wp_nonce_field() überprüft. Stimmen die Werte überein, so darf der Code weiter ausgeführt werden (Verkürzt dargestellt).
Auch für AJAX Calls stellt WordPress die Nonce Funktion zur Verfügung und es ist daher sehr sehr ratsam, diese zu verwenden!
Diese Funktion, check_ajax_referer(), ist auch sehr gut geeignet, um die Funktionsweise von Nonces zu verstehen.
Hier gibt es weiterführende Information:
http://wp.tutsplus.com/tutorials/creative-coding/capabilities-and-nonces
http://codex.wordpress.org/Function_Reference/check_ajax_referer
http://codex.wordpress.org/Function_Reference/wp_nonce_field
http://codex.wordpress.org/Function_Reference/wp_verify_nonce
Update vom 2. Oktober 2013:
http://markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/
Update vom 10. Juli. 2018:
In der Wikipedia gibt es jetzt eine Erklärung zum Begriff „Nonce“:
https://de.wikipedia.org/wiki/Nonce