WordPress Entwickler für Programmierung Ihrer Webprojekte
WordPress Entwickler für Programmierung Ihrer Webprojekte
  • Start
  • Unser Angebot
  • Blog
  • Kontakt
Avatar (Thumbnail) zum Blogeintrag

Nonces in WordPress

Niedergeschrieben von: zauni | 19. Mai 2021

ajax form formular input nonce referrer sicherheit

Was sind Nonces?

Wer davon noch nie gehört hat möge beruhigt sein: Man hat mit der Thematik und dem Wort selten etwas zu tun!

Im WP-Kontext sind Nonces eine zufällige Aneinanderreihung von Zahlen und Buchstaben, die zwar mehrmals verwendet werden (im Gegensatz zur üblichen Implementierung von Nonces – Number used once), aber ein klar definiertes Ablaufdatum haben.

Wie bereits im Artikel WordPress Sicherheit bei Formulareingaben und AJAX Aufrufen – verwendet Nonces! beschrieben wurde, sollen Nonces dabei helfen, URLs und Formulare auf Websites vor missbräuchlicher Benutzung und anderem Unfug zu schützen.

    Inhalt auf dieser Seite:

  1. Was sind Nonces?
  2. Erstellung
  3. Validierung
  4. Update vom 7. Mai 2021:
  5. Update vom 10. Juli. 2018:

Erstellung

Wie bei vielen Dingen, nimmt WordPress sehr viel Arbeit ab! Auch hier bei der Arbeit mit Nonces!

URLs

werden mit wp_nonce_url( $actionurl, $action, $name ); aufgerufen.

  • $actionurl ist die URL, die wir mit der Nonce „absichern“ wollen.
    • required; Default: None
  • $action ist der Name der action, die wir frei wählen können.
    • optional; Default: -1
  • $name ist der Name der so generierten Nonce.
    • optional; Default: _wpnonce

Als Rückgabewert erhalten wir eine bereinigte URL mit zusätzlicher Nonce. Diese sieht in etwa so „http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204“ aus.

Forms

werden mit wp_nonce_field( $action, $name, $referer, $echo ); aufgerufen. Diese Funktion generiert uns bis zu zwei hidden input Elemente.

  • $action definiert den Namen der action.
    • optional, aber empfohlen; Default: -1
  • $name ist der Name der so generierten Nonce.
    • optional. Default: _wpnonce
  • $referer gibt an, ob ein zusätzliches hidden input Element erstellt werden soll, das den Output der Funktion wp_referer_field beinhaltet.
    • optional; Default: true
  • $echo gibt an, ob die so erstellten inputs im HTML ausgegeben werden.
    • optional; Default: true

Als Rückgabewert erhalten wir ein oder zwei hidden input Elemente, wenn $referer true ist.

Beispiel für wp_nonce_field in Formularen.

Telefon+436603100000
E-Mailsouri@wp-entwickler.at
AdresseWP-Entwickler
Safenauer-Straße 62,
8230 Hartberg

Validierung

Das Thema Validierung könnte ein bisserl komplizierter sein.

Auch, weil die Parameter nicht so gut benannt sind und Verwirrung stiften könnten. Hier also der Versuch, der Entwirrung:

Allgemein

check_admin_referer( $action, $name ); überprüft sowohl die Nonce als auch den $referer.

  • $action ist der Name der action, die wir frei wählen können.
    • optional; Default: -1
  • $name ist der Name der so generierten Nonce.
    • optional; Default: _wpnonce
AJAX

check_ajax_referer( $action, $query_arg, $die ); überprüft nur die Nonce im Zuge eines AJAX-Requests.

  • $action ist der Name der action, die wir frei wählen können.
    • optional; Default: -1
  • $query_arg ist der Name der so generierten Nonce
    • optional; Default: false
  • $die gibt an, ob das script angehalten werden soll, wenn die Überprüfung fehlschlägt
    • optional; Default: true
Basic

wp_verify_nonce( $nonce, $action ); überprüft nur die Nonce.

  • $nonce ist der Name der Nonce, die überprüft werden soll.
    • required; Default: None
  • $action ist der Name der action.
    • optional; Default: -1

Eine einfache Überprüfung könnte z.B. so aussehen:

Validierung der wp-nonce mit wp_verify_nonce.

Weiterführende Informationen:

  • https://codex.wordpress.org/WordPress_Nonces
  • https://developer.wordpress.org/reference/functions/wp_nonce_url/
    • https://codex.wordpress.org/Function_Reference/wp_nonce_url
  • https://developer.wordpress.org/reference/functions/wp_nonce_field/
    • https://codex.wordpress.org/Function_Reference/wp_nonce_field
  • https://developer.wordpress.org/reference/functions/check_admin_referer/
    • https://codex.wordpress.org/Function_Reference/check_admin_referer
  • https://developer.wordpress.org/reference/functions/check_ajax_referer/
    • https://codex.wordpress.org/Function_Reference/check_ajax_referer
  • https://developer.wordpress.org/reference/functions/wp_verify_nonce/
    • https://codex.wordpress.org/Function_Reference/wp_verify_nonce

 

Update vom 7. Mai 2021:

Anpassungen an den Links zum Codex.

Der alte Codex haucht sein Leben aus, developer.wordpress.org übernimmt! Aber es ist alles noch nicht abgeschlossen, daher gelten manche Links im Codex noch. Zudem dort auch Mehrsprachigkeit vorhanden ist.

Update vom 10. Juli. 2018:

Die Wikipedia kennt jetzt das Wort Nonce

In der Wikipedia gibt es jetzt eine Erklärung zum Begriff „Nonce“:
https://de.wikipedia.org/wiki/Nonce

Navigation

Start Unser Angebot Blog

Impressum & Kontakt

wp-entwickler.at wird betrieben von

  • wp-entwickler Rene Souri
  • UID: ATU60950509
  • Safenauer-Straße 62
  • 8230 Hartberg

Wir lieben WordPress und freuen uns, mit Ihnen ein Projekt entwickeln zu können!

  • Impressum
  • AGB

wp-entwickler.at ist eine indit.at Division