How to get the wpnonce value?

时间:2013-09-25 作者:Navin Nagpal

使用inspect元素检查插件上列出的插件的“Deactivate”链接的“href”属性。php页面中,我发现url包含一个具有特定值的wpnonce字段。我需要得到这个值。对于eg,

<a href="plugins.php?action=deactivate&amp;plugin=my-custom-css%2Fmy-custom-css.php&amp;plugin_status=all&amp;paged=1&amp;s&amp;_wpnonce=08a2b0d940" title="Deactivate this plugin">Deactivate</a>
如何获得上述链接中的值“08a2b0d940”?

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

该值是为一次性使用而生成的随机ish字符串,如果我没记错的话,其使用寿命为12小时。我不知道你所说的“获取”值是什么意思。假设你的意思是“生成nonce”,那么。。。

你想要的wp_nonce_urlone of the related functions.

wp_nonce_url( $actionurl, $action, $name ); 
例如:

wp_nonce_url( \'http://www.google.com\'); 
如果您想要重新生成该值,则无法重新生成该值,但可以在情况允许的情况下使用PHP从URL中对其进行正则化,或者使用Javascript搜索生成的标记。因为我不知道你为什么要这么做,所以很难找到一个可靠的答案。

SO网友:user1676224

我知道这很旧,但其他人可能会发现这是一个有用的函数:

<?php
    function elab_disable_plugin_link( $plugin, $action = \'deactivate\' ) {
        if ( strpos( $plugin, \'/\' ) ) {
            $plugin = str_replace( \'\\/\', \'%2F\', $plugin );
        }
        $url = sprintf( admin_url( \'plugins.php?action=\' . $action . \'&plugin=%s&plugin_status=all&paged=1&s\' ), $plugin );
        $_REQUEST[\'plugin\'] = $plugin;
        $url = wp_nonce_url( $url, $action . \'-plugin_\' . $plugin );
        return $url;
    }
然后将插件名称和文件名添加到其中。

例如:。<a href="<?php echo elab_disable_plugin_link(\'my-custom-css-plugin/my-custom-css.php\'); ?>">Disable Plugin</a>

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。