Wordpress有一个nonce机制,插件可以将一个nonce发送到客户端代码,然后在客户端与服务器通信时验证nonce。
我查看了wp_verify_nonce()
的源代码(在wp-includes / pluggable.php中),看看如果nonce是24小时或更短时它返回true。
我是否有可能创建一个可以验证为...的随机数...让我们说...。1分钟之久?
如何?
我认为通过add_filter()
和nonce_life
有一种方式。但我不希望世界各地的喧嚣生命短暂。我只想要我的插件使用的nonce短暂的生命。
答案 0 :(得分:1)
我发现关于wordpress nonce的文档很少。
虽然代码本身并不复杂,并且有一种方法可以简单地替换wp_verify_nonce()
函数,但我相信在整个wordpress中很多地方都会使用nonce,而且我不相信我的替换会不打破其他事情。
在这里或其他地方缺乏任何有用的建议,我放弃了让我的随机数过期更快过期的想法,并添加了我自己的随机数/时间戳字段。
我正在编写的插件生成一个随机数,然后将其嵌入到脚本块中,然后在网页中呈现。当页面中的Javascript与wordpress admin-ajax.php通信时,它会发送回nonce。然后,Wordpress会使用wp_verify_nonce()
验证nonce,并在nonce未过期时允许该请求 - 根据需要12或24小时。此检查还验证呼叫者的身份。
我所做的只是生成另一个nonce,一个加密的时间戳。它以与WP nonce相同的方式嵌入到javascript脚本块中。它以相同的方式重新传输,并以类似的方式验证:我解密并检查时间戳是“最近的”。
不同之处在于我的插件控制了验证,因此我可以设置“新近度”的阈值。