Maison > Tutoriel CMS > WordPresse > le corps du texte

Explication détaillée de Nonce dans WordPress

藏色散人
Libérer: 2021-03-12 11:40:48
avant
4793 Les gens l'ont consulté

La colonne tutorielle suivante de WordPress vous présentera Nonce dans WordPress. J'espère qu'elle sera utile aux amis dans le besoin !

Nonce dans WordPress

Nonce est l'abréviation de nombre utilisée une fois Le nonce dans WordPress n'est pas un nombre, mais un hachage composé de chiffres et de caractères. Les valeurs peuvent non seulement être utilisées une fois, mais également avoir une durée de vie. Au cours de la durée de vie, le même paramètre générera la même valeur occasionnelle pour chaque utilisateur jusqu'à la fin de la durée de vie. Dans cet article, nous présenterons comment utiliser Nonce pour empêcher les attaques CSRF.

Créer un nonce

Le nonce peut être placé dans la requête Url ou dans l'élément caché d'un formulaire, puis utilisé via Javascript lors de la requête Ajax. Obtenez-le-le . Le cycle de vie d'un nom occasionnel ne concerne que la session en cours. Si vous vous déconnectez puis vous reconnectez, le nom occasionnel précédent sera également invalide.

Ajouter un nonce à l'URL

Vous pouvez ajouter un nonce à l'URL via la méthode wp_nonce_url() :

wp_nonce_url( $actionurl, $action, $name );
// 例如:
$complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID );
Copier après la connexion

où $bare_url (Sélection requise) est l'URL à laquelle le nom occasionnel doit être ajouté, et $action est le nom de l'action défini pour le nom occasionnel, facultatif, et la valeur par défaut est -1.

Par défaut, le nom du nonce généré dans le lien est _wpnonce. Afin d'éviter d'éventuels conflits, après la version 3.6 de WordPress, wp_nonce_url a ajouté un paramètre facultatif $name, qui permet aux utilisateurs de le spécifier eux-mêmes. nom du nonce dans le lien. Par exemple :

$complete_url = wp_nonce_url( $bare_url, 'trash-post_'.$post->ID, 'my_nonce' );
Copier après la connexion

Ajouter un nonce au formulaire

Vous pouvez ajouter un élément masqué au formulaire via la méthode wp_nonce_field() :

PHP

wp_nonce_field( $action, $name, $referer, $echo )
//例如 :
wp_nonce_field( 'delete-comment_'.$comment_id );
wp_nonce_field( $action, $name, $referer, $echo )
//例如 :
wp_nonce_field( 'delete-comment_'.$comment_id );
Copier après la connexion

appel La méthode ci-dessus générera un code similaire au suivant :

<input type="hidden" id="_wpnonce" name="_wpnonce" value="796c7766b1" />
<input type="hidden" name="_wp_http_referer" value="/wp-admin/edit-comments.php" />
Copier après la connexion

Générer un nom occasionnel distinct

Si vous souhaitez simplement générer un nom occasionnel indépendant, vous pouvez transmettre wp_create_nonce() Méthode :

wp_create_nonce( $action );
// 例如:
$nonce = wp_create_nonce( 'my-action_'.$post->ID );
Copier après la connexion

De même, $action est un paramètre facultatif et la valeur par défaut est -1. La méthode ci-dessus renverra un résultat similaire à « 295a686963 ».

Vérifier la validité du nonce

Vérifier le nonce dans le formulaire

Dans l'interface de gestion Admin, vous pouvez utiliser le check_admin_referer méthode pour vérifier la validité du nom occasionnel dans l'URL :

check_admin_referer( $action, $query_arg );
Copier après la connexion

Ce qui suit est un exemple montrant comment utiliser check_admin_referer pour vérifier le nom occasionnel dans le plug-in :

<form method="post">
   <!-- some inputs here -->
   <?php wp_nonce_field( &#39;name_of_my_action&#39;, &#39;name_of_nonce_field&#39; ); ?>
</form>
Copier après la connexion

Méthode de vérification :

check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' );
Copier après la connexion

Vérification nonce en Ajax

Si vous souhaitez vérifier la validité du nonce dans la requête Ajax, vous pouvez utiliser la méthode check_ajax_referer() :

check_ajax_referer( $action, $query_arg, $die )
Copier après la connexion

$die spécifie s'il faut mettre fin à l'exécution du script si $nonce n'est pas valide. (La valeur par défaut est True)

Un exemple simple d'utilisation de check_ajax_referer :

<?php
//Set Your Nonce
$ajax_nonce = wp_create_nonce( "my-special-string" );
?>
 
<script type="text/javascript">
jQuery(document).ready(function($){
    var data = {
        action: 'my_action',
        security: '<?php echo $ajax_nonce; ?>',
        my_string: 'Hello World!'
    };
    $.post(ajaxurl, data, function(response) {
        alert("Response: " + response);
    });
});
</script>
Copier après la connexion

Vérifiez à rebours avec le code suivant :

add_action( 'wp_ajax_my_action', 'my_action_function' );
function my_action_function() {
    check_ajax_referer( 'my-special-string', 'security' );
    echo sanitize_text_field( $_POST['my_string'] );
    wp_die();
}
Copier après la connexion

Vérifiez le nom occasionnel généré indépendamment

1
wp_verify_nonce( $nonce, $action );
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal