WordPress页面静态缓存时间过长导致的 Nonce 失效的问题

文 / @WordPress主题

关于WordPress中Nonce的有效期问题

我很高兴在这里和大家谈谈我在WordPress中关于随机数Nonce的有效期问题的一些看法。我们都知道,为了防范CSRF攻击,WordPress使用随机数Nonce来验证用户操作。默认情况下,WordPress生成的Nonce有效期为24小时。在这24小时中,某个操作的Nonce值都是相同的。

关于静态页面缓存问题和解决方案

有时候,这个Nonce是输出在页面中的,例如使用wp_nonce_field()函数生成的表单字段。如果我们使用了静态页面缓存,这个Nonce值会和该页面中的其他HTML一起被缓存起来。如果静态页面缓存的有效期大于24小时,那么24小时后,页面中缓存的Nonce就会失效。再使用这个Nonce值去验证请求的时候,就会导致验证失败。

那么,怎么解决这个问题呢?最简单的方法是将静态页面缓存有效期设置为小于24小时的数字,这样可以避免页面中缓存的Nonce失效。当然,如果有更好的方法,我会继续研究并在此分享。

感谢您的耐心阅读!

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。