WP_VERIFY_NONCE与CHECK_ADMIN_REFERER

时间:2012-04-05 作者:Jeff

有什么区别,我应该使用哪一个?

我知道wp\\u verify\\u nonce会检查时间限制,check\\u admin\\u referer我想会调用wp\\u verify\\u nonce并检查管理员url段,但我有点搞不清楚应该使用哪一个以及何时使用。

谢谢你的澄清。

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

我想check_admin_referer 检查了nonce(它确实调用wp_verify_nonce, and 引用url。在深入研究了核心代码之后,我意识到它并没有做到这一点。我认为这是一个bug,于是报告了它,Ryan Boren回答说:

实际上,如果nonce有效,则不应检查推荐人。引用者的不可靠性是使用nonce的原因之一。Nonces完全取代了推荐人检查。我们唯一检查推荐人的时间是在处理-1向后兼容性条件时-1意味着有人没有使用nonces,所以我们退回到推荐人检查。这种用法现在非常罕见。check\\u admin\\u referer()的名称很糟糕,因为它几乎从不进行referer检查。最好将其命名为check\\u nonce(),但为了后面的兼容性和旧时代的缘故,我们保持原样。

所以事实上没有区别。

SO网友:T.Todua

不!小心

不要指望check_admin_referer() 没有正确的参数!因为在某些情况下it may not die() (与您的期望相反),它只会返回false 回答

查看概述的行为source code 逻辑:

function check_admin_referer( $action = -1, $query_arg = \'_wpnonce\' ) {
    $result   = isset( $_REQUEST[ $query_arg ] ) ? wp_verify_nonce( $_REQUEST[ $query_arg ], $action ) : false;

    //Now, "die() check"
    if ( ! $result && ( -1 !== $action || strpos( wp_get_referer(), admin_url() ) !== 0 ) ) {
        die();
    }
    return $result;
}
因此,您需要了解逻辑的作用。此处细分:

A) 如果你打电话check_admin_referrer() 无参数:

记住,它将使用自动内置的_wpnonce 值(这是安全的,但在提交时仍要记住该字段)default -1 行动价值,引领die() check to be skipped and function will not die()

if ( check_admin_referer() ) exit;

B) 如果你愿意check_admin_referrer 要自动死亡,则应始终创建nonce&;使用参数调用它:

check_admin_referrer($action_name, $name_field );

结束

相关推荐

Do_action(‘admin_init’);实际上是什么?

禁用do\\u操作(“admin\\u init”)会产生什么影响;在管理中。php make?我禁用了此功能,因为每当我尝试插入特色图像时,都会出现404错误,即媒体上传。php和ajax管理。在服务器中找不到php。禁用do\\u操作(“admin\\u init”)后,除了管理设计消失之外,一切都很好。然后我手动勾选经典颜色。css。ThanksSabin公司