How to verify nonces in bulk?

时间:2018-05-15 作者:Sean Kelly

嘿,我对WP相对来说是新手,我正在尝试处理nonce,因为它们是一种很好的安全检查。我很难在中验证noncesave_post 然而

上的检查失败$_POST 检查。当var\\u转储$\\u POST变量时,我可以看到我的nonce和POST字段名,但我无法批量验证它们。当我删除验证时,一切正常。

link to gist

这是我的保存功能:

function mdw_save($post_id)
{
    $metas = array(
        \'s_1_title\',
        \'s_1_desc\',
        \'s_2_title\',
        \'s_2_desc\',
        \'s_1_image\',
        \'s_2_image\',
    );
    foreach ($metas as $meta) {
        if (!isset($_POST[$meta])) {
            return;
        }

        if (!wp_verify_nonce($_POST[$meta . \'_nonce\'], \'mdw_save\')) {
            return;
        }

        if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
            return $post_id;
        }

        update_post_meta($post_id, $meta, $_POST[$meta]);
    }

    return $post_id;
}

1 个回复
SO网友:Tom J Nowell

您不需要每个字段都有一个nonce,一个nonce就足够了

这是因为nonce没有绑定到字段,而是绑定到请求,并验证您是否确实打算按更新、单击链接、提交表单等

例如,在MySpace时代,他们没有在注销脚本上验证意图,因此您可以在个人资料上添加图像标记,并设置src 作为注销URL。任何访问你的个人资料的人都会被注销。

如果MySpace添加了一个nonce,他们就能够验证您是故意还是出于意外/恶意访问URL。

因此,您不需要同时验证多个nonce,只需要1个。

结束

相关推荐

custom css for admin only

我需要为管理自定义CSS。所以,若用户并没有登录,或者除了管理员之外,其他任何人都有一个CSS,对于管理员来说,只有不同的CSS。我在函数中尝试了此代码。php:function wpa66834_role_admin_body_class( $classes ) { global $current_user; foreach( $current_user->roles as $role ) $classes .= \' role-\' . $