关于随机数的混淆&在自定义列中使用它保存元数据的复选框值

时间:2018-09-25 作者:Adnan

我相信有多种方法可以使用nonce。

最近我用过wp_nonce_field(\'any_nonce_value\');

这将创建<input type="hidden" id="_wpnonce" name="_wpnonce" value="111bc61eba">

可以使用check_admin_referer(\'any_nonce_value\');

另一种方法是使用<input type="hidden" name="_wp_nonce_or_anything_we_desire" value="<?php echo wp_create_nonce(\'any_nonce_value\'); ?>">

我们可以使用wp_nonce_verify($_POST[\'_wp_nonce_or_anything_we_desire\'], \'any_nonce_value\')

我对nonce的理解正确吗?So here\'s the confusion

尝试创建自定义元数据库时,请添加自定义列、管理自定义列并最终保存帖子。我们需要在什么地方通过临时命令。让我的问题更清楚。

当我们连接到save\\u post时,建议在https://codex.wordpress.org/Plugin_API/Action_Reference/quick_edit_custom_box

 $_POST += array("{$slug}_edit_nonce" => \'\');
    if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"],
                           plugin_basename( __FILE__ ) ) )
    {
        return;
    }
那么,我们应该创建一个自定义nonce吗?创建metabox时?或者我们应该在这里使用自定义的post类型slug,而rest由Wordpress管理?期待你的回答,希望这能帮助像我这样的人!谢谢

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

尝试创建自定义元数据库时,请添加自定义列、管理自定义列并最终保存帖子。我们需要在什么地方通过临时命令。让我的问题更清楚。

这是不正确的,您不应该在元数据库中使用nonce,因为在更新或发布时,所有这些信息都会在完整请求中一次性发送,而WP已经为您处理了这些信息。

我认为这里的困惑在于,它从来没有解释过nonce应该保护什么,以及为什么要使用它。

在myspace时代,你可以在个人资料中添加一个图像标签,然后设置src="http://myspace.com/logout", 所有访问你个人资料的人都会被注销。

另一方面,nonce是一个对时间敏感的值,它通过确保您单击了按钮,或是因为您实际单击了该对象而执行了该操作,而不是因为CSRF攻击,来防止出现这种情况。

所以,如果你正在做某件事,那么可以使用nonce。如果您只是在读取值,那么没有必要。多个nonce也不会添加保护,因此元盒

而且check_admin_refererwp_nonce_verify 不一样:

  • wp_nonce_verify 字面上只需检查noncecheck_admin_referer 呼叫wp_nonce_verify 在内部,但它也基于结果执行操作,如果失败,它将退出/中止,并检查referer值wp_nonce_verify 仅检查nonce并返回true/false,由您使用该值执行操作wp_create_noncewp_nonce_field

    • wp_create_nonce 创建nonce值。由你来做点什么wp_nonce_field 输出整个隐藏字段,并调用wp_create_nonce 在内部,以及其他一些东西是否认为它们是buy_brick()build wall()

结束

相关推荐

Using nonce in menu item

我在主标题菜单中有一个注销链接,当你点击链接注销时,你会被重定向到页面,询问你是否真的想注销。我知道它这样做是因为菜单URL中没有nonce。我的问题是:是否可以在编辑菜单屏幕的CMS外观>菜单中添加nonce?url类似于:example.com/wp-login.php?action=logout&redirect_to=http://example.com/myaccount/&_wpnonce=只是为了好玩我试着加上wp_create_nonce(\'logout\') 到最