web-dev-qa-db-fra.com

Durée de vie maximale pour nonce

Dans notre projet, nous permettons aux utilisateurs d'acheter un coupon (produit WooCommerce) pour certains services. Nous enregistrons chaque coupon en tant que type de publication personnalisé avec toutes les données client insérées lors de l'achat.

Nous envoyons ensuite par email un lien pour télécharger le coupon en PDF. Nous utilisons WooCommerce PDF Invoices & Packing Slips le plugin pour générer des PDF et des liens est généré de cette manière:

$url = wp_nonce_url( admin_url( 'admin-ajax.php?action=generate_wpo_wcpdf&template_type=Coupon-PDF&order_id=' . $order->id ), 'generate_wpo_wcpdf' );

Le problème est évidemment la durée de vie du nonce. Nous aurions besoin d'un lien pour être actifs au moins un an, ce qui signifie que nous devrions définir le nonce à 2 ans. J'ai fait pas mal de recherches mais je n'ai pas pu trouver les informations appropriées.

La question est: quelle est la durée de vie maximale pour nonce?

De plus: Ce serait formidable que quelqu'un partage ses expériences avec l'extension de la durée de vie de nonce, comme dans ce cas.

1
Domas

Comme le temps varie, WordPress doit permettre qu'un nonce généré à 10:01 AM soit valide à 10:02 AM. Il le fait en utilisant un "tick" d'heure au lieu de l'heure réelle , qui est généré en deux étapes:

  • Divisez d'abord la durée de vie d'un nonce, en secondes, par deux
  • Divisez l'horodatage Unix par la valeur ci-dessus et arrondissez-le à l'aide de ceil ()

Par défaut, la durée de vie est de 86400 secondes , soit 24 heures (et peut être ajustée avec le nonce_life filtre). La moitié de cela, 12 heures, est 43200.

Avertissement de non-temps Sur la base d'une durée de vie de 24 heures, un "tick" tel que calculé ci-dessus est le même pour chaque période de 12 heures d'une journée. À 07h45, le "tick" est le même que 9h30 et 11h59. Mais ce sera un de moins qu'un "tick" créé à 12h01 PM (une nouvelle période de 12 heures dans la journée) ou 15h30.

Pour cette raison, un WordPress nonce n'est pas valide pendant exactement 24 heures à partir du moment où il a été créé, mais jusqu'à 24 heures, en fonction de la distance de 12 heures dans laquelle un nonce était créé.

Pour en savoir plus : http://myatus.com/p/wordpress-caching-and-nonce-lifespan/

1
Josip Ivic