为什么我需要在使用wp_nonce_field()之前检查它是否存在

时间:2010-09-11 作者:Jiew Meng

我真的不明白为什么在运行nonce函数之前要检查它是否存在。。。

if ( function_exists(\'wp_nonce_field\') ) 
     wp_nonce_field(\'gmp_nonce_check\');
我理解它的向后兼容性。。。

还要注意您是如何验证wp_nonce_field 函数在尝试调用它以实现向后兼容性之前已存在

但如果我在邮件背面检查,它会不会破裂

if ( isset($_POST[\'submit\']) ) {
     check_admin_referer(\'gmp_nonce_check\');

3 个回复
最合适的回答,由SO网友:jerclarke 整理而成

答案是,在使用wp\\u nonce\\u field()之前,不应该检查它是否存在!

执行检查的建议假设您希望与功能存在之前的WordPress版本兼容。如果Rarst在2.0.4中引入是正确的,那么您不应该支持早期版本,因为它们都是绝对不安全的,任何使用它们的人都需要立即升级。

通常,您不必检查WP内部是否存在函数,这与插件中可能未激活的函数不同。

你在哪里看到你引用的评论?应将其移除。

SO网友:Rarst

如果我正确理解您的问题,您会问为什么不需要检查check\\u admin\\u referer()是否也定义了?

据我在文档中看到的,这个函数(自WP 1.2.0以来)比WP\\u nonce\\u field()旧得多(自WP 2.0.4以来)。所以我假设您不太可能遇到那个并没有check\\u admin\\u referer()的古老版本。

SO网友:Daryl

当您的代码在WordPress版本上执行时,如果该版本不包含您试图使用的函数,您可以检查该函数是否存在,以防止出现致命错误和随后的应用程序停止。

这是否确保了向后兼容性?绝对地但是,更重要的是,此检查可防止代码在执行时导致整个应用程序崩溃:

在任何系统中,错误处理都应该是“优雅的”——这意味着应用程序应该知道如何检测自己的错误,并以某种适当的方式处理它们,而对最终用户的干扰最小。阅读更多信息http://www.devshed.com/c/a/PHP/PHP-Application-Development-Part-Two/2/#wIxuV7yhLhBTU1UZ.99

因此,在代码中,可以执行以下操作:

if ( function_exists(\'wp_nonce_field\') ) {
 wp_nonce_field(\'gmp_nonce_check\');
} else {
 //do nothing
 exit() ;
}

结束

相关推荐

Security and .htaccess

大约一个月前,我在一个与爱好相关的托管服务器上创建了一个WordPress博客。所以,我目前还不熟悉这一点。由于我担心安全性,我做的一件事就是安装插件WP安全扫描。根据插件结果,我的网站会被检查出来,但我在结果中看到的是一个红旗:文件。wp admin中不存在htaccess/(我在那里ssh了,它不存在)好的,所以我在这个问题上做了大量的搜索,找到了太多的信息。htaccess。我在WordPress上经历了强化WordPress。org网站等,也遇到了这篇文章:http://digwp.com/201