wordpress - 我可以让我的 WordPress 随机数更快过期吗? (通过 wp_verify_nonce)

标签 wordpress nonce

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

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

我是否可以创建一个可以验证为...比方说....1 分钟的随机数?

如何?

我认为有一种通过add_filter()nonce_life的方法。但我不希望各地的随机数生命周期很短。我只希望我的插件使用的随机数生命周期较短。

最佳答案

我发现很少有关于 wordpress nonce 的文档。

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

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

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

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

关于wordpress - 我可以让我的 WordPress 随机数更快过期吗? (通过 wp_verify_nonce),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10874682/

相关文章:

node.js - 如何在 NodeJS 中使用生成的随机数并在不调用数据库的情况下进行验证?

asp.net - 通过经过身份验证的 Web 表单保护 ASP.net 中的 Ajax 请求

html - 哪些 HTML 元素是不可分割的?

php - Wordpress 主题选项不会保存

php - 如何在 google map api 信息窗口中添加星级?

wordpress - 尝试使用 apache 阻止 google 脚本

css - Wordpress - 自定义 css - 菜单闪烁和不正确的字体

encryption - 如何在非对称加密(libsodium)中使用随机数?

node.js - Node http 请求无序执行,导致使用随机数值的 API 出现问题

wordpress - 将 WordPress REST API 用于 Gutenberg block 时,不会对 HTML 实体进行解码