Maximum lifetime for nonce

时间:2016-08-30 作者:Domas

在我们的项目中,我们允许用户为某些服务购买优惠券(WooCommerce产品)。我们将每个优惠券保存为一个自定义的post类型,并在购买过程中插入所有客户数据。

然后,我们通过电子邮件发送链接,以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\' );
问题显然是nonce的生存期。我们需要链接至少激活一年,这意味着我们应该将nonce设置为2年。我做了不少研究,但找不到合适的信息。

Question is: nonce的最大生存期是多少?

Additionally: 如果有人能分享他们将nonce寿命延长很多的经验,那就太好了,就像这个例子一样。

1 个回复
SO网友:Josip Ivic

随着时间的变化,WordPress需要允许上午10:01生成的nonce在上午10:02有效。它通过使用时间“勾号”而不是实际时间来完成此操作,实际时间分两步生成:

首先将一个nonce的寿命(以秒为单位)除以2,然后将Unix时间戳除以上述值,然后使用ceil()将其四舍五入默认情况下lifespan is 86400 seconds, 或24小时(并且可以使用nonce_life 过滤器)。其中一半,12小时,是43200。

临时警告基于24小时的寿命,一天中每12小时的“滴答声”都是相同的。上午7:45,“滴答声”与上午9:30和11:59相同。但它将比下午12:01(一天内新的12小时)或下午15:30创建的“滴答声”少一个。

因此,WordPress nonce从创建之日起的24小时内无效,但最长24小时内有效,这取决于创建nonce的时间间隔为12小时。

Further reading: https://medium.com/myatus/wordpress-caching-and-nonce-lifespan-bb357d984da9

相关推荐

找到2个ID不唯一的元素(#_ajax_nonce)和(#_wpnonce)

我正在从头开始开发自定义主题,创建自定义帖子类型,并在编辑自定义帖子类型时收到此警告。我还设计了带有两个输入字段的自定义元框,并在其中使用nonce。删除这些警告有什么帮助吗?下面是函数中自定义元框的代码。php//Custom Metabox function register_book_meta_box(){ add_meta_box(\'book_meta_box_id\', \'Book Detail\',\'design_book_meta_box\',\'bo