为什么允许重写关键的可插拔函数wp_verify_nonce和wp_create_nonce?

时间:2013-03-26 作者:Honoki

中的功能/wp-includes/pluggable.php 是功能wp_verify_noncewp_create_nonce. 这两项功能在防止CSRF攻击方面都非常重要。然而,很容易在插件中重写这些函数,以便所有nonce都被接受为有效。

if( ! function_exists(\'wp_verify_nonce\') ) {
  function wp_verify_nonce($nonce, $action = -1) {
    return 1;
  }
}
我已经对此进行了测试,事实上,CSRF保护现在已在站点范围内禁用。这些函数被放入pluggable.php 安全风险是否如此明显?

1 个回复
SO网友:fuxia

可插入功能中没有安全风险:如果有人安装了降低安全性的插件,那是他/她自己的错。另一方面,您可以重写这些函数以使nonce更加唯一或更改其格式。

在自定义函数中wp_verify_nonce() 您可以使用可选的第三个参数或更改nonce过期的时间。

现在不再引入可插拔功能。它们很难调试,您通常也可以使用过滤器进行调试。还有一个问题是,在您重新定义了可插拔功能之后,您无法确定是否会有其他插件(再次)重新定义它。

结束

相关推荐

当插件在Pluggable.php之前加载时,如何在插件中调用wp_get_Current_User()?

当前的结果是“PHP致命错误:调用未定义的函数wp\\u get\\u current\\u user()”,这很有意义,但没有帮助。我需要使用$current\\u user。以下是我当前使用的代码:$wp->init(); do_action( \'init\' ); // Check site status $file=\'http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php\'; if ( is_multi