嘿,我对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;
}
SO网友:Tom J Nowell
您不需要每个字段都有一个nonce,一个nonce就足够了
这是因为nonce没有绑定到字段,而是绑定到请求,并验证您是否确实打算按更新、单击链接、提交表单等
例如,在MySpace时代,他们没有在注销脚本上验证意图,因此您可以在个人资料上添加图像标记,并设置src
作为注销URL。任何访问你的个人资料的人都会被注销。
如果MySpace添加了一个nonce,他们就能够验证您是故意还是出于意外/恶意访问URL。
因此,您不需要同时验证多个nonce,只需要1个。