3

Wordpress 有一个随机数机制,插件可以将随机数发送到客户端代码中,然后在客户端与服务器通信时验证随机数。

我查看了wp_verify_nonce() (在 wp-includes/pluggable.php 中)的源代码,如果 nonce 是 24 小时或更短时间,它会返回 true。

我是否有可能创建一个可以验证为...假设... .1 分钟前的随机数?

如何?

我认为有一种方法通过add_filter() and nonce_life。但我不希望无处不在的随机数短命。我只希望我的插件使用的 nonce 寿命很短。

4

1 回答 1

1

我在 wordpress nonce 上发现的文档很少。

虽然代码本身并不是很复杂,并且有一种方法可以简单地替换wp_verify_nonce()函数,但我相信在整个 wordpress 中的很多地方都使用了 nonce,我不确定我的替换不会破坏其他东西。

由于缺乏来自这里或其他地方的任何有用的建议,我放弃了让我的 nonce更快过期的想法,只是添加了我自己的 nonce/timestamp 字段。

我正在编写的插件生成一个随机数,然后将其嵌入到脚本块中,然后在网页中呈现。当页面中的 Javascript 与 wordpress admin-ajax.php 通信时,它会发回 nonce。Wordpress 然后验证随机数,wp_verify_nonce()如果随机数没有过期,则允许请求 - 12 或 24 小时,如您所愿。此检查还验证调用者的身份。

我所做的只是生成另一个随机数,一个加密的时间戳。它以与 WP nonce 相同的方式嵌入到 javascript 脚本块中。它以相同的方式重新传输,并以类似的方式进行验证:我解密并检查时间戳是否是“最近的”。
不同之处在于我的插件控制验证,因此我可以设置“新近度”的阈值。

于 2012-06-04T16:48:40.507 回答