web-dev-qa-db-fra.com

Nonce en échec IE

J'ai un problème étrange qui semble affecter IE mais pas Chrome (je n'ai essayé aucun autre navigateur)

Je génère un formulaire avec un nonce en utilisant le code suivant -

<?php wp_nonce_field('solution-reg') ?>

J'ai actuellement le code qui sort la totalité du tableau $_REQUEST sur le navigateur afin que je puisse voir que le champ nonce est soumis avec les données du formulaire -

Array ( [_wpnonce] => a7250b35a1 [_wp_http_referer] => /path-removed-for-stackexchange/ [..more fields..] ) 

Dans mon code, j'appelle la fonction de vérification comme suit

if( !wp_verify_nonce($_POST['_wpnonce'], 'solution-reg') ){

    $this->renderer->addData('error', __('Invalid request', '...'));
    return false;
}

Dans Chrome, je ne peux pas obtenir que cela échoue et chaque tentative passe à la page suivante sans problème. Dans IE, la première demande me donne toujours l'erreur "Demande invalide". Si je clique à nouveau sur le bouton d'envoi de formulaire, tout se passe bien.

La seule autre chose que je puisse penser qui pourrait l’affecter est que du javascript vérifie tout champ de formulaire avec un attribut data-validate="1", déclenché par le gestionnaire de formulaires .submit, mais comme cela ne semble pas affecter la valeur nonce passée dans le formulaire que je peux '. t voir comment cela pourrait affecter la vérification de nonce.

J'ai vraiment du mal à voir ce que IE pourrait faire différemment et qui pourrait affecter la vérification correcte du nonce.

Edit: (tl/dr j'abandonne)

L'enregistrement des appels à wp_create_nonce semble suggérer qu'il n'est jamais appelé si je charge la page dans IE. C'est le cas si j'ajoute des vars de chaîne de requête aléatoire. Cela suggère de mettre en cache quelque part mais je ne le comprends tout simplement pas. Les en-têtes indiquent max-age 0, no-cache et expirent immédiatement. Le plugin Total Cache est activé mais ne le voit pas comme chrome est correct. J'ai fini par désactiver le nonce car je n'ai pas vraiment d'autre réponse.

2
Matt Churchyard

Vous ne devez pas utiliser nonce pour les utilisateurs non connectés. Vous ne devez pas utiliser les nonces dans aucun scénario de mise en cache de page complet ou partiel. Contrairement à l'impression donnée à maintes reprises, le simple fait de saupoudrer de l'argent ici et là, sans raison particulière, n'améliore pas la sécurité des sites et peut entraîner des problèmes pour les utilisateurs non connectés.

1
Mark Kaplun