wp_verify_nonce() 是什么意思?

发布于 2024-12-01 11:40:54 字数 398 浏览 0 评论 0原文

我已阅读 WordPress 上此函数的 参考,但我仍然不明白此函数是什么确实如此。

我正在阅读有关在 WordPress 中创建元框的教程,并且我在保存数据的函数中包含以下代码:

if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
                return $post_id;
}

有人可以简要解释一下 wp_verify_nonce() 的含义是什么?

I've read the reference of this function on Wordpress but i still don't understand what this function really does.

I'm reading a tutorial about creating a meta box in wordpress and I have this code inside the function which saves the data:

if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
                return $post_id;
}

Can someone explain briefly what is the meaning of wp_verify_nonce() ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬花如无物 2024-12-08 11:40:54

nonce 是一个“使用过一次的数字”,WP 使用该代码来确保 POST 数据来自安全的地方。这对于确保您的插件最终不会消化来自不安全来源的数据很有用(请参阅Cross-站点请求伪造)。

Mark Jaquith 的这篇博文对于理解它们很有用。

[nonces] 对于 WordPress 安装、WordPress 用户、操作、操作对象以及操作时间(24 小时窗口)是唯一的。这意味着如果其中任何一个发生变化,随机数就会无效。因此,如果您(以某种方式)拦截了我正在使用的随机数,那么您首先只有 24 小时的时间来使用此密钥来尝试欺骗我。

要创建随机数,您必须为 wp_create_nonce 指定一个特定字符串,为随机数提供“上下文”。它返回一个字符串——随机数本身。然后,您可以将此随机数包含在 POST 请求中。然后,接收页面应该使用相同的上下文创建自己的随机数,并查看它们是否匹配。

在本例中,给定的上下文是 plugin_basename(__FILE__)。每当从同一个插件中调用它时,都会生成相同的字符串(请参阅此处)。

当您的 wp_verify_nonce 收到在 Mark 指定的相同情况下使用相同上下文字符串创建的随机数时,它会返回 true。

简而言之:

!wp_verify_nonce

如果 wp_verify_nonce 返回 false,则返回 true。

($_POST[$meta_box['name'].'_noncename'], 

wp_verify_nonce 的第一个参数:要检查的随机数。此代码从 post 请求中获取随机数,存储在 $_POST 全局变量中。

plugin_basename(__FILE__) )

wp_verify_nonce 的第二个参数:用于生成新随机数的上下文,将根据该新随机数检查第一个随机数。

{ return $post_id; }

如果随机数不匹配,则停止执行当前函数,返回变量 $post_id

The nonce is a 'number used once' - a code that WP uses to make sure that POST data is coming from a safe place. This is useful to make sure that your plugin does not end up digesting data from an unsafe source (see Cross-Site Request Forgery).

This blog post by Mark Jaquith is useful for understanding them.

[nonces] are unique to the WordPress install, to the WordPress user, to the action, to the object of the action, and to the time of the action (24 hour window). That means that if any of these things changes, the nonce is invalid. So if you (somehow) intercept a nonce being used by me, you would, first of all, only have 24 hours to use this key to attempt to trick me.

To create a nonce you must give wp_create_nonce a certain string, providing the 'context' for the nonce. It gives you back a string - the nonce itself. You then include this nonce as part of your POST request. The receiving page should then create a nonce of its own, using the same context, and see if they match up.

In this case, the context given is plugin_basename(__FILE__). This will generate the same string whenever it is called from within the same plugin (see here).

When your wp_verify_nonce recieves a nonce created under the same circumstances as specified by Mark, with the same context string, it returns true.

In short:

!wp_verify_nonce

returns true if wp_verify_nonce returns false.

($_POST[$meta_box['name'].'_noncename'], 

First argument to wp_verify_nonce: the nonce to check. This code gets the nonce out of the post request, stored in the $_POST global.

plugin_basename(__FILE__) )

Second argument to wp_verify_nonce: the context for generating the new nonce against which the first will be checked.

{ return $post_id; }

If the nonce doesn't match, stop executing the current function, returning the variable $post_id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文