WordPress Sicherheit bei Formulareingaben und AJAX Aufrufen – verwendet Nonces!

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://wp.tutsplus.com/tutorials/creative-coding/capabilities-and-nonces/

http://codex.wordpress.org/Function_Reference/check_ajax_referer
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_nonce_field

http://codex.wordpress.org/Function_Reference/wp_verify_nonce
http://codex.wordpress.org/Function_Reference/wp_verify_nonce

 Update vom 2. Oktober 2013:
http://markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/
http://markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/

 

 

 

 

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">