Je crois qu'il y a plusieurs façons d'utiliser le nonce.
Récemment, j'ai utilisé wp_nonce_field('any_nonce_value');
ce qui crée un <input type="hidden" id="_wpnonce" name="_wpnonce" value="111bc61eba">
et cela pourrait être confirmé en utilisant check_admin_referer('any_nonce_value');
Une autre façon serait d'utiliser <input type="hidden" name="_wp_nonce_or_anything_we_desire" value="<?php echo wp_create_nonce('any_nonce_value'); ?>">
Nous pouvons vérifier cela en utilisant wp_nonce_verify($_POST['_wp_nonce_or_anything_we_desire'], 'any_nonce_value')
Ma compréhension du nonce est-elle correcte? Alors voici la confusion
Lorsque vous essayez de créer une métabox personnalisée, ajoutez des colonnes personnalisées, gérez les colonnes personnalisées et enfin enregistrez la publication. Où devons-nous passer le nonce. Pour rendre ma question plus claire.
Lorsque nous nous connectons à save_post, le code partiel suivant est suggéré à https://codex.wordpress.org/Plugin_API/Action_Reference/quick_edit_custom_box
$_POST += array("{$slug}_edit_nonce" => '');
if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"],
plugin_basename( __FILE__ ) ) )
{
return;
}
Devrions-nous créer un nonce personnalisé? en créant metabox? Ou devrions-nous simplement utiliser le slug de type de message personnalisé ici et le reste est géré par Wordpress? Dans l’attente de votre réponse utile, cela aidera, espérons-le, beaucoup d’autres comme moi! Merci.
Lorsque vous essayez de créer une métabox personnalisée, ajoutez des colonnes personnalisées, gérez les colonnes personnalisées et enfin enregistrez la publication. Où devons-nous passer le nonce. Pour rendre ma question plus claire.
Ce n'est pas correct, vous ne devriez pas avoir besoin d'un nonce dans une metabox car toutes ces informations sont envoyées en une fois dans la demande complète lors de la mise à jour ou de la publication, et WP le gère déjà pour vous.
Je pense que la confusion est qu’il n’a jamais été expliqué ce contre quoi un nonce est censé protéger et pourquoi il est utilisé.
À l'époque de myspace, vous pouviez insérer une balise d'image dans votre profil et définir src="http://myspace.com/logout"
. Toutes les personnes ayant consulté votre profil seraient alors déconnectées.
Un nonce, en revanche, est une valeur sensible au temps, qui protège contre cela en garantissant que vous avez cliqué sur le bouton, ou fait la chose parce que vous avez réellement cliqué sur la chose, et non à cause d'une attaque CSRF.
Donc, si vous faites quelque chose qui fait quelque chose, alors oui, utilisez un nonce. Si vous ne faites que lire des valeurs, alors non, ce n'est pas nécessaire. Plus d'un nonce n'apporte pas de protection non plus, d'où des métaboxes
De plus, check_admin_referer
et wp_nonce_verify
ne sont pas identiques:
wp_nonce_verify
vérifie littéralement le noncecheck_admin_referer
appelle wp_nonce_verify
en interne, mais il fait aussi des choses en fonction du résultat. Il va quitter/abandonner s'il échoue et il vérifie également les valeurs du référent.wp_nonce_verify
ne vérifie que le nonce et renvoie vrai/faux, c'est à vous de faire quelque chose avec cette valeurla même chose avec wp_create_nonce
et wp_nonce_field
wp_create_nonce
crée une valeur nonce. C'est à vous de faire quelque chose avec çawp_nonce_field
génère un champ caché complet, appelle wp_create_nonce
en interne et effectue d'autres tâches.Pensez à eux comme à la différence entre buy_brick()
et build wall()