我有一个简单的“favorite post”按钮,可用于AJAX。我知道使用WordPress nonce可以提高安全性,但我不太清楚它为什么或者如何做到这一点。这也使我无法检查是否正确、安全地实现了nonce。
jQuery Script
function favorites_javascript() {
$ajax_nonce = wp_create_nonce( "ajax-nonce-favorites" );
?>
<script>
( function( $ ) {
var ajaxurl = "<?php echo admin_url(\'admin-ajax.php\'); ?>";
// ...
// Data to be sent to function
var data = {
\'action\': \'favorites_callback\',
\'security\': \'<?php echo $ajax_nonce; ?>\',
\'post_id\': post_id,
\'button_action\' : button_action
};
// Send Data
jQuery.post(ajaxurl, data, function(response) {
// ...
});
// ...
} )( jQuery );
</script>
<?php
} add_action( \'wp_footer\', \'favorites_javascript\' );
PHP Callback
function favorites_callback() {
check_ajax_referer( \'ajax-nonce-favorites\', \'security\' );
if ( !is_user_logged_in() ) {
wp_send_json_error( \'Error!\' );
}
// Process Data
wp_die();
} add_action( \'wp_ajax_favorites_callback\', \'favorites_callback\' );
这是WordPress nonce for AJAX的正确实现吗?我如何“测试”这段代码,以查看nonce是否工作且安全?