web-dev-qa-db-ja.com

nonceの最大寿命

私たちのプロジェクトでは、ユーザーがいくつかのサービスのクーポン(WooCommerce製品)を購入できるようにしています。すべてのクーポンをカスタムの投稿タイプとして保存し、購入時にすべての顧客データを挿入します。

次に、メールでPDFでクーポンをダウンロードするためのリンクを送信します。を使用しております WooCommerce PDF Invoices & Packing Slips PDFおよびリンクを生成するためのプラグインは、次の方法で生成されます。

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

問題は明らかにナンスの寿命です。少なくとも1年間アクティブになるにはリンクが必要です。つまり、ノンスを2年間に設定する必要があります。私はかなりの調査を行いましたが、適切な情報を見つけることができませんでした。

質問は: nonceの最大寿命はどれくらいですか?

追加:この場合のように、誰かがnonceの寿命を大幅に延長した経験を共有できたら素晴らしいと思います。

1
Domas

WordPressは、午前10時1分に生成されたnonceが午前10時2分に有効になることを許可する必要があります。これは、実際の時間の代わりに時間の「目盛り」を使用して行われます。 、2つのステップで生成されます。

  • 最初にノンスの寿命を秒単位で2で割ります
  • Unixタイムスタンプを上記の値で割り、ceil()を使用して切り上げます。

デフォルトでは、ライフスパンは86400秒、つまり24時間です(そしてnonce_lifeフィルターで調整できます)。この半分、12時間は43200です。

ノンスタイムの警告24時間のライフスパンに基づくと、上記で計算された「ティック」は、1日の12時間のスパンごとに同じです。 07:45 AMの「ティック」は、9:30 AMおよび11:59 AMと同じです。ただし、12:01 PM(1日のうちの新しい12時間の範囲))または15:30 PMに作成される「目盛り」より1つ少なくなります。

このため、a WordPress nonceは、それが作成された瞬間から正確に24時間有効ではありませんが、nonceが12時間にどれだけ遠いかに応じて、最大24時間有効です作成した。

さらに読むhttp://myatus.com/p/wordpress-caching-and-nonce-lifespan/

1
Josip Ivic