nonce 是一个“使用一次的数字”——WP 用来确保 POST 数据来自安全位置的代码。这有助于确保您的插件最终不会消化来自不安全来源的数据(请参阅跨站点请求伪造)。
Mark Jaquith的这篇博文有助于理解它们。
[nonce] 对于 WordPress 安装、WordPress 用户、操作、操作对象和操作时间(24 小时窗口)是唯一的。这意味着如果这些事情中的任何一个发生变化,nonce 都是无效的。因此,如果您(以某种方式)拦截了我正在使用的 nonce,首先,您将只有 24 小时的时间使用此密钥来试图欺骗我。
要创建一个 nonce,您必须给出wp_create_nonce
一个特定的字符串,为 nonce 提供“上下文”。它给你一个字符串 - 随机数本身。然后,您将此 nonce 作为您的 POST 请求的一部分。然后接收页面应该使用相同的上下文创建自己的随机数,并查看它们是否匹配。
在这种情况下,给出的上下文是plugin_basename(__FILE__)
。每当从同一个插件中调用它时,这将生成相同的字符串(参见此处)。
当您wp_verify_nonce
收到在 Mark 指定的相同情况下创建的具有相同上下文字符串的 nonce 时,它返回 true。
简而言之:
!wp_verify_nonce
如果 wp_verify_nonce 返回 false,则返回 true。
($_POST[$meta_box['name'].'_noncename'],
的第一个参数wp_verify_nonce
:要检查的随机数。此代码从存储在 $_POST 全局中的发布请求中获取随机数。
plugin_basename(__FILE__) )
的第二个参数wp_verify_nonce
:生成新随机数的上下文,将根据该上下文检查第一个随机数。
{ return $post_id; }
如果 nonce 不匹配,停止执行当前函数,返回变量$post_id
。