wp_nonce_field ist nicht brauchbar, oder sehe ich das falsch

  • Hallo mal wieder so eine WP super Funktion, die nicht brauchbar ist.

    Und zwar habe ich mehrere Formulare und möchte eben die WP Funktion "wp_nonce_field" benützen. Doch diese ist einfach nicht gut. Denn Sie nimmt denn Namen und gibt dem Feld auch eine "id" aus dessen Namen, was natürlich nun zu einem invaliden HTML führt.

    Hier die Funktion: Keine Chance die id wegzulassen.
    https://developer.wordpress.org/reference/func…wp_nonce_field/

    verkürztes Beispiel aus meinem View file:

    PHP
    <?php foreach($theme['config_files'] as $configFileKey => $configFile) { ?>
        <div class="">
            <form method="post">
                <?= wp_nonce_field('create-config-file', 'create-config-file', false, false); ?>
                <input type="hidden" name="my_action" value="create-config-file">
                <input type="hidden" name="config_file_name" value="<?= $configFileKey; ?>">
                <input class="button button-primary" name="create-name" value="create" type="submit">
            </form>
        </div>
    <?php } ?>


    übersehe ich denn da was? oder seht ihr das gleiche Problem an dieser Funktion? Besten Dank im voraus.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Eine id darf ja nur einmal vorkommen. Deshalb kommt es zu einem Fehler: Dublicate ID "name_of_id".

    Denn es wird ja mehrmals ausgegeben:

    Code
    <input id="create-config-file" name="create-config-file" value="417ce7780f" type="hidden">

    Aber egal, muss ich eben die wp_create_nonce() Funktion nehmen.

    Ich will ja nicht nur rummekern, aber ich sehe lauter solche Sachen, die einfach nur unnötig Zeit kosten.

    Z. b. auch laut Doku hier:
    https://codex.wordpress.org/Function_Reference/wp_nonce_field

    Und nur der Anfang der Funktion:

    PHP
    function wp_verify_nonce( $nonce, $action = -1 ) {    $nonce = (string) $nonce;

    Was wäre denn wenn der
    $_POST['name_of_nonce_field']

    ein Array ist. Führt natürlich zu einem Error oder Warnung. Aber egal.

  • Warum wird das mehrfach ausgegeben?

    Jedes Formular bekommt normalerweise seine eigene Nonce. Beispiele im Codex, dort wird jeweils die entspr. ID angehängt.

    Ein Error oder eine Warnung von PHP wird im laufenden Live-Betrieb bei entspr. Konfiguration von WP_DEBUG nicht ausgegeben.

    Einmal editiert, zuletzt von b3317133 (10. Januar 2017 um 18:19)

  • Hey danke nochmals.

    Ich möchte eben die gleiche nonce für jedes Formular. Bei meinem Vorhaben macht es einfach keinen Sinn für jedes Formular eine Nonce zu generieren und es würde auch meinen Controller dann unnötig verkomplizieren.

    Anderes Beispiel: Nehmen wir mal als Beispiel eine Liste von Shop Produkten, würde ja keinen Sinn machen für jedes Formular (um in den Warenkorb zu fügen) ein anderes Token zu generieren und die Session unnötig zubeanspruchen. Oder?

  • Das Nonce-System von WordPress dient hauptsächlich zur Abwehr von CSRF-Angriffen. Wenn man das System (wie oder warum auch immer) absichtlich aushebelt, sollte man genau wissen was man tut. Viel Erfolg mit dem Projekt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!