Erfahrungen mit dem Hinzufügen von Nonces zum Kommentarformular

7

Ich habe mich gefragt, welche Auswirkungen Nonces auf das Standardkommentar eines Themas haben würden. Da Nonces eine integrierte Funktion von WordPress ist, habe ich darüber nachgedacht, es auszuprobieren.

Hat jemand bereits Nonces im Standardkommentarformular implementiert? (Ich kann mir nicht vorstellen, dass ich der erste bin, der darüber nachdenkt ...!)

Kann jemand ein bereits vorhandenes Plugin vorschlagen, das die Aufgabe erledigt, oder ein Code-Snippet bereitstellen, das das WP Nonce-Feld in das Kommentarformular für Themen integriert und es beim Senden des Formulars überprüft?

hakre
quelle

Antworten:

5

Ich habe das nicht persönlich gemacht, aber es wäre ziemlich einfach. Wenn Sie Ihr Kommentarformular manuell erstellen, kurz vor dem Ende des </form>Put:

<?php wp_nonce_field( 'comment_nonce' ) ?>

Dann schließen Sie sich einfach der pre_comment_on_postAktion an, die ausgelöst wird, wenn Sie einen Kommentar abgeben:

add_action( 'pre_comment_on_post', 'my_verify_comment_nonce' );

function my_verify_comment_nonce() {

    check_admin_referer( 'comment_nonce' );

}

Wenn Sie sich nur in das Standardkommentarformular einbinden möchten, das Twenty Ten verwendet ( comment_form()), können Sie sich stattdessen comment_formwie folgt einbinden :

add_action( 'comment_form', 'my_add_comment_nonce_to_form' );

function my_add_comment_nonce_to_form() {

    wp_nonce_field( 'comment_nonce' );

}

Nicht getestet, also lass es mich wissen, wenn du irgendwelche Probleme hast!

Joe Hoyle
quelle
1
Oh, ich werde es versuchen und dann einen Kern-Patch bereitstellen, wenn es passend erscheint. Sollte verhindern, dass die One-Request-Spammer länger Kommentare eingeben. check_admin_referer () könnte missbraucht werden, weil es nicht der Administrator ist - oder? Sie müssen untersuchen, wie Kommentare gespeichert werden.
hakre
3
Soweit ich weiß, gibt es kein Problem mit der Verwendung check_admin_referer(), ich denke, der Name ist ein wenig irreführend.
Joe Hoyle
Ich werde dies als beantwortet oder als Moment bewerten, da es meistens passend erscheint. Danke für das Teilen!
hakre